0

lpdt7今日から 7 日以内に自分のいる場所を選択する必要があります。以下のコードは、「日付、時刻、またはタイムスタンプ文字列の値が無効です」を返します。

SELECT lnmast.sname,
       lnmast.status,
       ddmast.acctno,
       ddmast.status,
       date(digits(lpdt7)) AS closed
FROM mydat.lnmast lnmast
LEFT OUTER JOIN mydat.ddmast ddmast ON lnmast.cifno = ddmast.cifno
AND lnmast.altadd = ddmast.altadd
WHERE lnmast.status = 2
  AND date(digits(lpdt7)) >= curdate() -7 days
4

2 に答える 2

0

date(digits(lpdt7)) のような 10 進数では日付関数が機能せず、表示されるエラーが発生すると思います。YYYYMMDD 形式の 10 進数の日付を想定しています。このように変換できます。

 DATE (SUBSTR ( DIGITS (lpdt7) , 1 , 4 ) || '-' || 
       SUBSTR ( DIGITS (lpdt7) , 5 , 2 ) || '-' || 
       SUBSTR ( DIGITS (lpdt7) , 7 , 2 ) )

0 を抑制しないため、CHAR の代わりに DIGITS を使用しています。システムで日付変換関数を作成することをお勧めします。SQL コードはよりきれいに見えます。この回答は、ライブ システムで使用されている日付関数の一部から取得されました。

于 2013-02-08T02:02:55.733 に答える
0

私のエラーみんな。最初に日付フィールドの null 値をトラップする必要がありました。

WHERE lnmast.status = 2 and lpdt7 > 1 and date(digits(lpdt7)) >= curdate() - 7 days
于 2013-02-08T14:10:43.850 に答える