sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server datum Format användarberoende?

Om du behöver ange datum och tider med hjälp av strängar bör du använda ett safe , språkoberoende format.

I SQL Server är det ISO-8601-formatet (något anpassat), och det stöder i princip två säkra format för DATETIME som alltid fungerar - oavsett inställningar för språk, region och datumformat:

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)

Obs:

  • det första formatet endast för datum har inga bindestreck eller avgränsare!

  • det andra formatet har streck för datumet (kan också utelämnas), och det finns en fast T som avgränsare mellan datumet och tidsdelen av strängen

Uppdatering: enligt din senaste kommentar (om de olika standardspråken för de två användarna) - prova detta:

-- this is how your `SA` interprets the string as datetime....
SET LANGUAGE english
SELECT CAST('2012-11-30 23:59' AS DATETIME)   

Fungerar bra...

-- this is how your British user interprets teh string as datetime
SET LANGUAGE british
SELECT CAST('2012-11-30 23:59' AS DATETIME)

Detta försöker tolka strängen som 11:e av den 30:e månaden 2012 och uppenbarligen misslyckas det...



  1. Flask SqlAlchemy slå samman två modeller utan främmande nyckel MYSQL

  2. VÄLJ den överordnade för en post

  3. Android:Hur man laddar en bild dynamiskt från servern med dess namn från SQlite

  4. Skala PostgreSQL med Connection Poolers &Load Balancers