21 messaggi dal 10 agosto 2006
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:
2006-08-17 00:00:00.000


e la funzione usata è stata:
convert(datetime,disponibilita.datadal,103)


grazie per l'eventuale aiuto che mi darete.
1.976 messaggi dal 27 luglio 2005
Contributi
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:
2006-08-17 00:00:00.000


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

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.