0

PERIODこの形式の文字列"" yyyymmdd(例:20120701)をSQLServerで日付に変換したいと思います。だから私はこのような変換関数を使用しました:

CONVERT(DATETIME,PERIOD,102);

 CONVERT(DATETIME,PERIOD,120);

しかし、私は

SqlException:「式をデータ型datetimeに変換する際の算術オーバーフローエラー。」

これはクエリ全体ですが、これに他の間違いはありますか?

"SELECT ACTUAL_N_WELLS, TARGET_N_WELLS, [YTD ACTUAL] AS YTD_ACTUAL, [YTD BUDGET] AS YTD_BUDGET FROM DASH_GL_DRILLING_PERF WHERE ASSET_NAME='Bu Hasa Asset' AND ( CONVERT(DATETIME,PERIOD,112) > (SELECT DATEADD(MONTH,-3,MAX(CONVERT(DATETIME,PERIOD,112))) from DASH_GL_DRILLING_PERF))");

これを行う正しい方法は何ですか?

4

4 に答える 4

3

yyyymmddなので、必要です

CONVERT(DATETIME, PERIOD, 112)

キャストと変換をチェックしてください

于 2012-09-24T12:19:54.733 に答える
2

日付形式の問題である場合は、範囲外のエラーが発生します。オーバーフローエラーが発生した場合は、整数を使用していないことを確認してください。

CONVERT(DATETIME, 20120701, 102) - overflow
CONVERT(DATETIME,'20120701',102) - ok
于 2012-09-24T12:26:26.950 に答える
0
declare @dt varchar(100)='20120701'
select convert(datetime,@dt)
于 2012-09-24T12:42:02.477 に答える
0
select Convert(date,CONVERT(DATETIME,'20120701',102));

これにより、指定された期間が日付形式に変換されます。

于 2012-09-24T12:29:22.737 に答える