SQL声明datetime - 1001-01-01

dop*_*ner 5 sql-server datetime

我试图声明一个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)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

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.
Run Code Online (Sandbox Code Playgroud)

是否可以声明一个datetime可以保存值1001-01-01 00:00:00.000的变量?

mat*_*mmo 16

DateTime数据类型的最小有效日期是1753年1月1日.

尝试DATETIME2,使用:

DECLARE @d4 DATETIME2 = '1001-01-01'
Run Code Online (Sandbox Code Playgroud)

对最低有效日期DATETIME20001-01-01


Guf*_*ffa 5

你不能那样做。值的最早日期datetime是 1753-01-01。

最近版本的 Sql Server 的数据类型范围datetime2更大:

declare @d1 datetime2 = '1001-01-01';
Run Code Online (Sandbox Code Playgroud)