salve,
motogpdesmo16 ha scritto:
Non riesco ad effettuare la conversione da un tipo di dato dichiarato come smalldatetime in un tipo di dato che non abbia l'orario. Mi serve per la visualizzazione in tabella e, causa altri fattori, non posso/voglio utilizzare la funzione left.
Ho letto sull'msdn della funzione CONVERT che, nonostante la sua applicazione, non produce i risultati sperati. Infatti, con o senza CONVERT, ottengo come risultato:
e la funzione usata è stata:
convert(datetime,disponibilita.datadal,103)
grazie per l'eventuale aiuto che mi darete.
SQL Server non espone il tipo di dato "date" separato dal tipo "time"... esiste in un'unica soluzione, datetime o nel suo sottodominio smalldatetime..
se in una conversione da testo a datetime ometti la parte "tempo", l'istanza del tipo viene valorizzato con il default che corrisponde a mezzanotte, quindi 00:00:000, mentre se ometti la parte "data", il default corrisponde al giorno 1 gennaio 1900 ..
SET NOCOUNT ON;
DECLARE @dt datetime;
SET @dt = '20060101';
SELECT @dt AS [solo parte data];
SET @dt = '08:30:00';
SELECT @dt AS [solo parte temporale];
--<----------
solo parte data
-----------------------
2006-01-01 00:00:00.000
solo parte temporale
-----------------------
1900-01-01 08:30:00.000
la funzione da te utilizzata, CONVERT(...) con la specifica dello "style" va utilizzato nel modo inverso, cioe' nel convertire una data in una stringa rispettando lo style passato, tipicamente
SET NOCOUNT ON;
SELECT CONVERT( varchar, GETDATE(), 103) AS [stringa]
--<-------------
stringa
-----------
11/08/2006
che sfrutta il default di conversione in varchar, come indicato nei BOL, per una lunghezza massima di 30 caratteri.. in questo caso, pero', il tipo di dato restituito sara' appunto un varchar ma non un datetime, ed e' bene tenerlo presente nel caso debba eseguire successivamente delle operazioni temporali su questo... ma se la tua esigenza si limita alla renderizzazione del valore dell'attibuto allora nulla ostra tranne il principio secondo il quale la formattazione spetta al lato client e non al lato server...
saluti