我需要在今天的7天内执行lpdt7
之内的选择。
下面的代码返回:“日期,时间或时间戳字符串中的值无效。”
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
答案 0 :(得分:0)
我认为日期函数不适用于十进制日期(数字(lpdt7))并导致您看到的错误。 假设您的小数日期为YYYYMMDD格式。你可以像这样转换它。
DATE (SUBSTR ( DIGITS (lpdt7) , 1 , 4 ) || '-' ||
SUBSTR ( DIGITS (lpdt7) , 5 , 2 ) || '-' ||
SUBSTR ( DIGITS (lpdt7) , 7 , 2 ) )
我使用的是DIGITS而不是CHAR,因为它不会抑制0。 最好在你的系统中创建日期转换功能 - sql代码看起来会更清晰。这个答案取自我们现场系统中使用的部分日期功能。
答案 1 :(得分:0)
我的错误家伙。我必须首先在日期字段中捕获空值。
WHERE lnmast.status = 2 and lpdt7 > 1 and date(digits(lpdt7)) >= curdate() - 7 days