1. ホーム
  2. sql

[解決済み] SQLでは、日付カラムをdatetimeにキャストすることができないのですか?

2022-02-14 16:32:31

質問

Select * 
from tableA 
inner join tableB on tableA.id = tableB.aid 
                  and cast(a.date AS DATETIME) = CAST('2015-08-24' AS DATETIME) 

に格納されている値 tableA.date は「2015-08-24」であり、データに問題がないことを意味します。

上記のステートメントを実行すると、次のようになります。

日付データ型から日付時刻データ型への変換で、範囲外の値が発生しました。

をキャストすることができない理由を教えてください。 date カラムを datetime ?

解決方法は?

その 根本原因 の問題点はこれです。

  • データ型 DATE には、許容される値の範囲として 01-01-0001 から 12-31-9999
  • データ型 DATETIME には、許容される値の範囲として 01-01-1753 から 12-31-9999

だから、もしあなたがたまたま DATE 1753年以前のもの、あるいは空値やNULL値などは DATETIME が処理できる。

あなたは 使用停止 DATETIME SQL Serverでは 2008 およびそれ以降のバージョン。使用方法 DATETIME2(n) 代わりに(ここで n は必要な秒数を表します)。

そこで、こうしてみてください。

select * 
from tableA 
inner join tableB on tableA.id = tableB.aid 
                  and cast(a.date AS DATETIME2(3)) = CAST('2015-08-24' AS DATETIME2(3)) 

で、これでうまくいくと思います。