Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Форматът на датата на SQL Server зависи от потребителя?

Ако трябва да посочите дати и часове с помощта на низове, трябва да използвате safe , независим от езика формат.

В SQL Server това е форматът ISO-8601 (леко адаптиран) и поддържа основно два безопасни формата за DATETIME които винаги работят - независимо от вашите настройки за език, регион и формат на дата:

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)

Забележка:

  • първият формат само за дата няма без тирета или разделители!

  • вторият формат има тирета за датата (също могат да бъдат пропуснати) и има фиксирано T като разделител между частта от датата и часа на низа

Актуализация: според последния ви коментар (за различните езици по подразбиране за двамата потребители) - опитайте това:

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

Работи добре...

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

Това се опитва да интерпретира низа като 11-ти от 30-ия месец на 2012 г. и очевидно това се проваля...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате SSIS API за четене на пакет и определяне на последователност от задачи от код (PrecedenceConstraints)

  2. sql сървър конвертира datetime в друга часова зона?

  3. Какви фактори могат да причинят повторно компилиране на съхранена процедура на SQL Server?

  4. SQL Server PDF Full-Text Search не работи на FileStream PDF файл

  5. как да проверите уникалността (без дублиране) на публикация в rss емисия