sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server dato Format bruger afhængig?

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...



  1. GROUP BY / aggregeret funktionsforvirring i SQL

  2. Brug af IF EXISTS med en CTE

  3. Sådan bruges savepoints i oracle-proceduren

  4. novalidate med fejl ora-02299