PDA

Visualizza la versione completa : [T-SQL] Problemi con GETDATE()


fedrok
24-05-2004, 16:44
Buongiorno.

Devo creare una funzione definita dall'utente in SQL Server 2000.
Mi serve che la funzione, alla quale non passo alcun parametro, mi restituisca la data in formato AAAAMMSS come varchar(8).
Io ho provato col codice:



CREATE FUNCTION dataNow()
RETURNS varchar(8)
AS
BEGIN
declare @hData varchar(8)
set @hData = CAST(YEAR(GETDATE()) AS varchar(8)) + CAST(month(GETDATE()) AS varchar(2)) + CAST(day(GETDATE()) AS varchar(2))
return @hData
end



Tuttavia il controllore sintattico di SQL Server si arrabbia dicendomi:



Errore 443: utilizzo non valido di getdate in una funzione.


Qualche suggerimento?

Grazie.

:ciauz:

Boldan
24-05-2004, 16:50
Non so se funziona (non conosco molto bene Transact SQL) ma forse esiste la funzione Now() che puoi usare al posto di getdate.



Ciao

fedrok
24-05-2004, 16:55
Now() non esiste in T-SQL.
In compenso ho scoperto che non si possono usare le funzioni non deterministiche (GETDATE()lo !) all'interno delle funzioni definite dall'utente.

Quindi devo per forza passare la date attuale alla funzione dal codice chiamante.


Risolto.

:ciauz:

fedrok
24-05-2004, 17:11
...il codice corretto il seguente:



/*
Riceve come parametro una data in formato datetime e restituisce la stessa in formato AAAAMMGG come char(8).
*/

CREATE FUNCTION date2char(@dataPar as datetime)
RETURNS char(8)
AS
BEGIN
declare @hData varchar(8)
set @hData = CAST(YEAR(@dataPar) AS char(4)) + right('0' + CAST(month(@dataPar) AS varchar(2)) ,2) + right('0' + CAST(day(@dataPar) AS varchar(2)) ,2)
return cast(@hData as char(8))
end




:ciauz:

Lucis
24-05-2004, 23:31
cos'?

Sergio Pedone
24-05-2004, 23:40
Questo a qualcuno serve sicuramente:
http://forum.html.it/forum/showthread.php?s=&threadid=588640

Johnny_Depp
25-05-2004, 00:11
Originariamente inviato da fedrok
...il codice corretto il seguente:
(magola-maga-magia)
volevi postarlo qua... vero? :D

fedrok
25-05-2004, 08:46
Grazie!

Avevo gi segnalato a LadyBlu l'errore.

:ciauz:

Loading