Hvis du har brug for at angive dato og klokkeslæt ved hjælp af strenge, skal du bruge en safe , sproguafhængigt format.
I SQL Server er det ISO-8601-formatet (lidt tilpasset), og det understøtter grundlæggende to sikre formater til DATETIME
der altid virker - uanset dit sprog, regionale og datoformatindstillinger:
YYYYMMDD (e.g. 20121231 for 31st of December 2012) if you need date only
YYYY-MM-DDTHH:mm:ss (e.g. 2012-12-31T21:05:00 for 31st of December 2012, 9:05pm)
Bemærk:
-
det første format kun til dato har ingen bindestreger eller skilletegn!
-
det andet format har bindestreger for datoen (kan også udelades), og der er en fast
T
som afgrænsning mellem datoen og tidsdelen af strengen
Opdatering: som i din sidste kommentar (om de forskellige standardsprog for de to brugere) - prøv dette:
-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)
Fungerer fint...
-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)
Dette forsøger at fortolke strengen som 11. af den 30. måned af 2012 og åbenbart mislykkes det...