Има много формати, поддържани от 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
тип данни, ако изобщо е възможно