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.