SQL Server не съхранява DateTime
във всеки формат на низ - съхранява се като 8-байтова числова стойност.
Различните настройки (език, формат на датата) влияят само на това как DateTime
ви се показва в SQL Server Management Studio - или как се анализира, когато се опитате да конвертирате низ в DateTime
.
Има много формати, поддържани от SQL Server - вижте MSDN Books Online на CAST и КОНВЕРТИРАНЕ . Повечето от тези формати са зависими какви настройки имате - следователно тези настройки може да работят понякога - а понякога и не.
Начинът да разрешите това е да използвате формата за дата ISO-8601 който се поддържа от SQL Server - този формат работи винаги - независимо от настройките за език и формат на датата на SQL Server.
ISO-8601 формат се поддържа от SQL Server, предлага се в два варианта:
YYYYMMDD
само за дати (без част от времето) - обърнете внимание тук:без тирета! , това е много важно!YYYY-MM-DD
еНЕ независимо от настройките за формат на дата във вашия SQL Server и НЕ работете във всички ситуации!
или:
YYYY-MM-DDTHH:MM:SS
за дати и часове - обърнете внимание тук:този формат има тирета.
Това е валидно за SQL Server 2000 и по-нови.
Ако използвате SQL Server 2008 и DATE
тип данни (само DATE
-не DATETIME
!), тогава наистина можете да използвате и YYYY-MM-DD
формат и това също ще работи с всякакви настройки във вашия SQL Server.
Не ме питайте защо цялата тази тема е толкова сложна и донякъде объркваща - просто това е така. Но с YYYYMMDD
формат, трябва да сте добре за всяка версия на SQL Server и за всяка настройка за език и формат на дата във вашия SQL Server.