Наилучшим форматом для строковых дат является стандартный формат ISO-8601 .
Для DATETIME
переменных и столбцов это либо YYYYMMDD
(для дат без времени; без тире!) Или YYYY-MM-DDTHH:MM:SS
(дата + время).
Вопреки распространенному мнению, YYYY-MM-DD
для DATETIME
переменных НЕ не зависит от языка / даты! Если вы попробуете это, второй CAST
приведет к ошибке:
SET LANGUAGE us_english
SELECT CAST('2011-07-20' AS DATETIME)
SET LANGUAGE british
SELECT CAST('2011-07-20' AS DATETIME)
но это будет работать:
SET LANGUAGE british
SELECT CAST('20110720' AS DATETIME)
Это лучший формат, поскольку он не зависит от настроек языка и даты в SQL Server.
Для SQL Server 2008 и столбцов типа DATE
(только дата - без времени) формат также может быть YYYY-MM-DD
(с тире), что также работает для всех настроек.
Почему такая разница между DATE
и DATETIME
мне не под силу - это так, как сейчас!
См. Превосходное руководство Тибора Караси Окончательное руководство по типам данных DateTime для получения более подробной информации и примеров.