このクエリを実行すると、
declare @var nvarchar(448) = '0x1d1a33c677c0000';
select CAST(DATEADD(mi, (CAST(CONVERT(varbinary(max),@var, 1) as bigint) / 600000000), CAST('1/1/1601' AS DATETIME2)) as DATETIME2)
次のエラーが発生します。
メッセージ 8114、レベル 16、状態 5、行 2
データ型 nvarchar を varbinary に変換中にエラーが発生しました。
しかし、nvarchar を 18 文字の長さの文字列に変更し、追加のゼロを埋め込むと、クエリは正常に機能します。
サンプル:
declare @var nvarchar(448) = '0x01d1a33c677c0000';
select CAST(DATEADD(mi, (CAST(CONVERT(varbinary(max),@var, 1) as bigint) / 600000000), CAST('1/1/1601' AS DATETIME2)) as DATETIME2)
結果:
2016-05-01 00:00:00.0000000
STUFFステートメントを使用してこれをバイパスしましたが。しかし、私はこの行動を理解したいですか?
SQL Server 2008 を使用しています。