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)) 这样的小数,并导致您看到的错误。假设您的十进制日期为 YYYYMMDD 格式。你可以像这样转换它。

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

我使用 DIGITS 而不是 CHAR,因为它不会抑制 0。最好在您的系统中创建日期转换函数 - sql 代码看起来会更清晰。这个答案取自我们实时系统中使用的日期函数的一部分。

于 2013-02-08T02:02:55.733 回答
0

我的错误伙计们。我必须首先在日期字段中捕获空值。

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