2016-04-08 14 views
0

私は、次の構文と(dateadd(yy、13、isNull(キャスト(datetimeとしてのp.birthDTS)、キャスト( '1/1)を使用してdatetime2として保存された誕生日に13年を追加しようとしています。/1950 'as datetime)))> = @ svcStart)datetime2オーバーフローエラー

と私はを取得します。' datetime '列に値を追加するとオーバーフローが発生しました。

Iは、最大(p.birthDTS)を検索し、それは1988年10月17日00返さ:00:00.0000000私が得た

@svcStart用として2015年4月8日13:10:49.193

私は少し狂っています。どんな助け?

JB

+0

「birthDTS」の* MINの値は何ですか? –

答えて

1

あなたがDATETIMEとは対照的に、DATETIME2に自分の価値観をキャストしようとする場合がありますDATETIME2ている値を使用している場合:

DATEADD(yy,13,ISNULL(CAST(p.birthDTS AS DATETIME2),CAST('1/1/1950' AS DATETIME2))) 

あなたは無効なデータを持っていないと仮定しますか、同様の問題と、提供したデータの例が正しい(つまり、最大値が1988-10-17)。seen here

enter image description here

すべてのデータタイプを再度チェックして、データタイプが期待どおりに定義されていることを確認し、データを再度照会してエッジケースをチェックすることを検討します(例:最小値、可能なヌルなど)。

0

datefieldのレコードの値が有効な日付でないか、またはこの値に月または日付を追加してその出力が日付範囲を超えた場合、このエラーが発生する可能性があります。

+0

あなたは正しいです。テーブルの最大生年月日は、明らかに9999-01-01 00:00:00.0000000のエラーですが、エラーを除外するためにチェックする必要があります。あなたのコメントをありがとうございます。 – user1795131

+0

@ user1795131だから、あなたが言ったときに、「私は最大(p.birthDTS)を検索し、それは1988-10-17 00:00:00.0000000を返す」..? –

関連する問題