6

値が1001-01-01 00:00:00.000の datetime 変数を宣言しようとしています。

私は運がない次のアプローチを試しました

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.

値1001-01-01 00:00:00.000datetimeを保持できる変数を宣言することは可能ですか?

4

4 に答える 4

18

データ型の最小有効日付はDateTime1753 年 1 月 1 日です。

を試してくださいDATETIME2:

DECLARE @d4 DATETIME2 = '1001-01-01'

の最小有効日DATETIME20001-01-01

于 2013-03-20T15:58:57.707 に答える
4

そんなことはできません。値に指定できる最も古い日付datetimeは 1753-01-01 です。

最近のバージョンの Sql Server にdatetime2は、より広い範囲のデータ型があります。

declare @d1 datetime2 = '1001-01-01';
于 2013-03-20T15:59:16.417 に答える
1

最小の SQL 日時は 1,1753 年 1 月であるため、実際の日付は範囲外です。

于 2013-03-20T15:59:37.163 に答える
0

SQLServer の日時は 1753 年 1 月 1 日 < X < 12/31/9999 でなければなりません

http://msdn.microsoft.com/en-us/library/ms187819.aspx

DateTime をその年に設定することはできないため、文字列として保存し、上位層の言語に処理を任せることができます。

于 2013-03-20T15:59:19.080 に答える