Опитвам се да обявя променлива за дата-време със стойността 1001-01-01 00: 00: 00.000
Опитах следните подходи без късмет
declare @d1 datetime = "1001-01-01";
declare @d2 datetime = 10010101;
declare @d3 datetime = "1001-01-01 00:00:00";
declare @d4 datetime = cast ("1001-01-01" as datetime)
Получавам следните грешки
Msg 242, Level 16, State 3, Line 1
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Msg 8115, Level 16, State 2, Line 2
Arithmetic overflow error converting expression to data type datetime.
Msg 242, Level 16, State 3, Line 3
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Msg 242, Level 16, State 3, Line 4
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Възможно ли е да се декларира datetime
променлива, която може да задържи стойността 1001-01-01 00: 00: 00.000?
Отговори:
15 за отговор № 1Минималната валидна дата за DateTime
тип данни е 1 януари 1753 г.
Опитвам DATETIME2
, използвайки:
DECLARE @d4 DATETIME2 = "1001-01-01"
Минималната валидна дата за DATETIME2
е 0001-01-01
4 за отговор № 2
Не можете да направите това. Най-ранната дата, че a datetime
може да има стойност е 1753-01-01.
Последните версии на SQL Server имат типа данни datetime2
който има по-голям обхват:
declare @d1 datetime2 = "1001-01-01";
1 за отговор № 3
Минималната дата на SQL е януари 1,1753, така че датата ви наистина е извън обхват.
0 за отговор № 4
Времето на SQLServer трябва да е 1/1/1753 <X <12/31/9999
http://msdn.microsoft.com/en-us/library/ms187819.aspx
няма да можете да зададете DateTime за тази година, така че може да искате да я запазите като низ и да я оставите на горния слой, за да се справите.