/ / SQL обявява дата - 1001-01-01 - sql-сървър, datetime

SQL обявява дата - 1001-01-01 - sql-сървър, datetime

Опитвам се да обявя променлива за дата-време със стойността 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 за тази година, така че може да искате да я запазите като низ и да я оставите на горния слой, за да се справите.