Der er mange formater, der understøttes af SQL Server - se MSDN Books Online på CAST
og CONVERT
. De fleste af disse formater er afhængige på hvilke indstillinger du har - derfor kan disse indstillinger fungere nogle gange - og nogle gange ikke.
Måden at løse dette på er at bruge det (lidt tilpassede) ISO-8601 datoformat der understøttes af SQL Server - dette format fungerer altid - uanset dit SQL Server-sprog og indstillinger for datoformat.
ISO-8601-formatet er understøttet af SQL Server kommer i to varianter:
YYYYMMDD
kun for datoer (ingen tidsdel); bemærk her:ingen bindestreger! , det er meget vigtigt!YYYY-MM-DD
er IKKE uafhængig af datoformatindstillingerne i din SQL Server og vil IKKE arbejde i alle situationer!
eller:
YYYY-MM-DDTHH:MM:SS
for datoer og tidspunkter - bemærk her:dette format har bindestreger (men de kan). udelades), og en fastT
som afgrænsning mellem dato- og tidsdelen af dinDATETIME
.
Dette er gyldigt for SQL Server 2000 og nyere.
Hvis du bruger SQL Server 2008 eller nyere og DATE
datatype (kun DATE
- ikke DATETIME
!), så kan du faktisk også bruge YYYY-MM-DD
format, og det vil også fungere med alle indstillinger i din SQL Server.
Spørg mig ikke, hvorfor hele dette emne er så vanskeligt og noget forvirrende – sådan er det bare. Men med YYYYMMDD
format, bør du være i orden for enhver version af SQL Server og for enhver sprog- og datoformatindstilling i din SQL Server.
Anbefalingen for SQL Server 2008 og nyere er at bruge DATE
hvis du kun skal bruge datodelen og DATETIME2(n)
når du har brug for både dato og klokkeslæt. Du bør prøve at begynde at udfase DATETIME
datatype, hvis det nogensinde er muligt