3

私はこのコードを持っています

Select * FROM [DB].[dbo].[STG_TABLE]
WHERE convert(datetime, cast([CHANGE_DATE] as char(8))) > DATEADD(DAY, -3, GETDATE())

CHANGE_DATE は数値型 (8,0) です。

このコードは以前に使用したことがあります。ローカル マシンでは同じデータで引き続き動作しますが、これを開発サーバーで実行するとエラーが発生します。

文字列から日時を変換する際に変換に失敗しました。

両方のコンピュータのコントロール パネルで同じシステム日付設定が行われています。

変換を削除すると、次のようになります。

Select * FROM [DB].[dbo].[STG_TABLE]
WHERE cast([CHANGE_DATE] as char(8)) > DATEADD(DAY, -3, GETDATE())

同じエラーが発生し、大なりの後にあると信じるようになりますが、その理由はまだわかりません。

4

2 に答える 2

5

別の変換を試してください。

Select * FROM [DB].[dbo].[STG_TABLE]
WHERE [CHANGE_DATE] >  cast(convert(char(8),DATEADD(DAY, -3, GETDATE()),112) as numeric(8,0))

GetDate() -> CHAR(8) -> NUMERIC そしてテーブルフィールドと比較

于 2013-07-18T06:45:32.583 に答える
1

また、テーブルの日付を確認してください

SELECT [CHANGE_DATE]
from [DB].[dbo].[STG_TABLE]
where isdate(cast([CHANGE_DATE] as char(8)))=0
于 2013-07-18T06:53:43.383 に答える