J'essaie d'écrire une requête simple pour me montrer les différences de dates entre la date de livraison de la command et la date de livraison de la command où il y a un lien entre les deux.
Je reçois une erreur lorsque j'exécute la requête ci-dessous:
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])
Le message d'erreur indique:
Erreur de dépassement arithmétique lors de la conversion de l'expression en type de données datetime.
Je remarque que l'un des champs que j'essaie d'utiliser (t1.u_shipdetl) a été créé par l'user, alors est-il possible qu'il n'ait pas été créé correctement?
Merci
L'une des ShipDate
et U_ShipDetl
ne sont pas datetime
types de données datetime
et la tentative de conversion de celle-ci en valeur datetime échoue. L' erreur de dépassement arithmétique suggère qu'il essaie de convertir à partir d'un type numérique. Peut-être que la valeur est stockée en tant que 20170509
? Si oui, cela peut fonctionner:
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]))