1. ホーム
  2. sql-server

[解決済み] 式をデータ型datetimeに変換する際に算術オーバーフローエラーが発生する。(日付と時刻の表示中に...)

2022-02-13 22:32:43

質問

実行中に以下のエラーが表示されます。

declare @yr_mnth_dt as numeric;
set @yr_mnth_dt = 20130822;
select convert(datetime,@yr_mnth_dt,112) as YR_MNTH_DT

エラーが表示されます

Arithmetic overflow error converting expression to data type datetime.

解決方法は?

あなたの問題は、あなたが以下のことをしようとしていることです。 convert を、数値から datetime ということで、これはうまくいきません。

にする必要があります。 numeric を文字列に変換してください。

declare @yr_mnth_dt as numeric;
set @yr_mnth_dt = 20130822;

select yr_mnth_dt = cast(cast(@yr_mnth_dt as char(8)) as datetime);

SQL Fiddleのデモ .

数値型に変換しようとすると datetime SQL Server は、数値を日数として日付に追加しようとします。 01-Jan-1900 . あなたの場合、これは数百万日を追加しようとしているため、オーバーフローエラーが発生します。

CONVERT も問題なく動作します。

select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));

SQL Fiddleのデモ .