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