Esistono molti formati supportati da SQL Server:vedere la Documentazione in linea di MSDN su CAST
e CONVERT
. La maggior parte di questi formati sono dipendenti su quali impostazioni hai - quindi, queste impostazioni potrebbero funzionare alcune volte - e talvolta no.
Il modo per risolvere questo problema è utilizzare il formato data ISO-8601 (leggermente adattato) supportato da SQL Server:questo formato funziona sempre - indipendentemente dalla lingua di SQL Server e dalle impostazioni del formato della data.
Il formato ISO-8601 è supportato da SQL Server è disponibile in due versioni:
YYYYMMDD
solo per date (nessuna porzione di tempo); nota qui:nessun trattino! , è molto importante!YYYY-MM-DD
è NON indipendente dalle impostazioni del formato della data nel tuo SQL Server e NON lavora in tutte le situazioni!
oppure:
YYYY-MM-DDTHH:MM:SS
per date e orari - nota qui:questo formato ha trattini (ma loro possono essere omesso) e unaT
fissa come delimitatore tra la data e l'ora del tuoDATETIME
.
Questo è valido per SQL Server 2000 e versioni successive.
Se utilizzi SQL Server 2008 o versioni successive e DATE
tipo di dati (solo DATE
- non DATETIME
!), allora puoi infatti utilizzare anche il YYYY-MM-DD
format e funzionerà anche con qualsiasi impostazione nel tuo SQL Server.
Non chiedermi perché l'intero argomento è così complicato e un po' confuso:è proprio così. Ma con il YYYYMMDD
formato, dovresti andare bene per qualsiasi versione di SQL Server e per qualsiasi impostazione di lingua e formato della data nel tuo SQL Server.
Il consiglio per SQL Server 2008 e versioni successive consiste nell'usare DATE
se ti serve solo la parte della data, e DATETIME2(n)
quando hai bisogno sia della data che dell'ora. Dovresti provare a eliminare gradualmente DATETIME
tipo di dati se mai possibile