sql >> データベース >  >> RDS >> Sqlserver

式をデータ型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フィドルとデモ。

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

    CONVERT 必要に応じて、正常に動作します:

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

    SQLフィドルとデモ。



    1. M-M関係を強制するためのトリガー

    2. MySQLのデフォルトの制約名は何ですか?

    3. 列のサイズを変更する方法

    4. 外部キーの制約により、サイクルまたは複数のカスケードパスが発生する可能性がありますか?