SQL Server gemmer ikke en DateTime
i ethvert strengformat - det er gemt som en 8 byte numerisk værdi.
De forskellige indstillinger (sprog, datoformat) påvirker kun hvordan DateTime
vises til dig i SQL Server Management Studio - eller hvordan det parses, når du forsøger at konvertere en streng til en DateTime
.
Der er mange formater, der understøttes af SQL Server - se MSDN Books Online på CAST og KONVERTER . 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 ISO-8601-datoformatet 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
for kun 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 tankestreger.
Dette er gyldigt for SQL Server 2000 og nyere.
Hvis du bruger SQL Server 2008 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.