2017-05-10 8 views
2

私は、2つの間にリンクがある受注納品日と注文受注納品日の差異を表示する簡単なクエリを作成しようとしています。私は、以下のクエリを実行するときSQL Server 2005クエリの算術オーバーフローエラー

私はエラーを取得しています:

SELECT T0.[DocNum], T0.[CardCode], T0.[CardName], T0.[DocDueDate], T1.[LineNum], T1.[ItemCode], T1.[Dscription], T1.[Quantity], T1.[POTRGNUM],T1.[ShipDate] as 'SO Delivery Date', T1.[U_ShipDetl] as 'PO Delivery Date' 

FROM ORDR T0 INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry 

WHERE T0.[DocStatus] ='O' AND T1.[POTRGNUM] IS NOT NULL and (T1.[ShipDate] > T1.[U_ShipDetl]) 

をエラーメッセージが読み:データ型のdatetimeに式を変換し

算術オーバーフローエラーを。

私が使用しようとしているフィールドの1つ(t1.u_shipdetl)がユーザー作成されているので、正しく作成されていない可能性があります。

おかげ

+0

[悪い習慣をキックする:(A、B、C)または(T1、T2、T3)のようにテーブルの別名を使用して - アーロンバートランド(http://sqlblog.com /blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-table-aliases-like-abc-or-t1-t2-t3.aspx) – SqlZim

+0

「ShipDate」と「U_ShipDetl」のいずれか'は' datetime'データ型ではなく、そのデータ型をdatetime値に変換しようとしても失敗しています。 – SqlZim

答えて

0

ShipDateの一つとU_ShipDetldatetimeデータ型ではない、と日時の値に1つを変換しようとする試みが失敗しています。 算術オーバーフローエラーは、数値型から変換しようとしていることを示しています。おそらく値は20170509として保存されていますか?そうである場合、これは動作することができる:

select 
    T0.[DocNum] 
    , T0.[CardCode] 
    , T0.[CardName] 
    , T0.[DocDueDate] 
    , T1.[LineNum] 
    , T1.[ItemCode] 
    , T1.[Dscription] 
    , T1.[Quantity] 
    , T1.[POTRGNUM] 
    , T1.[ShipDate] as 'SO Delivery Date' 
    , T1.[U_ShipDetl] as 'PO Delivery Date' 
from ORDR T0 
    inner join RDR1 T1 
    on T0.DocEntry = T1.DocEntry 
where T0.[DocStatus] = 'O' 
    and T1.[POTRGNUM] is not null 
    and T1.[ShipDate] > convert(date,convert(char(8),T1.[U_ShipDetl])) 
+0

こんにちはジム、感謝の気持ちです。 – user3232977

+0

charデータ型をdatetimeデータ型に変換すると、範囲外のdatetime値が返される – user3232977

+0

@ user3232977日付をサポートするには 'date'または' datetime2(0-7) 'に切り替えます。 「0001-01-01」から「9999-12-31」まで – SqlZim

関連する問題