SELECT DATE_FORMAT(<dateField>, '%m/%d/%Y')
FROM <table>
WHERE <dateField>
BETWEEN CURDATE() - INTERVAL 1 month AND CURDATE()
我收到此错误。
ORA-00905:缺少关键字 00905. 00000 - &#34;缺少关键字&#34; *原因:
*动作:行错误:1列:104
此外,NOW()
,DATE_SUB(NOW()
,INTERVAL 30 DAY
和NOW()
等其他功能无效,也会引发类似错误。我无法处理SYSDATE
检索到的日期,因为我无法使用DATE_FORMAT
函数对其进行转换。我现在可以做什么?
答案 0 :(得分:0)
这应该有希望。
where子句是查找当前服务器时间(now()),并从中获取一个月,然后测试日期字段是否大于该值。
SELECT DATE_FORMAT(<dateField>, '%m/%d/%Y')
FROM <table>
WHERE <dateField> >= date_sub(now(), interval 1 month)
答案 1 :(得分:0)
将mysql BETWEEN
与CURDATE
一起使用: -
SELECT DATE_FORMAT(DATE_FORMAT(<dateField>, '%m/%d/%Y') ) FROM
table WHERE <dateField>
BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
或试试这个: -
SELECT DATE_FORMAT(DATE_FORMAT(<dateField>, '%m/%d/%Y') ) FROM
table WHERE <dateField> BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW()
答案 2 :(得分:0)
ORA-00905:缺少关键字00905. 00000 - &#34;缺少关键字&#34; *原因:
`ORA-00905是Oracle错误代码。
SELECT DATE_FORMAT(<dateField>, '%m/%d/%Y')
FROM <table>
WHERE <dateField>
BETWEEN CURDATE() - INTERVAL 1 month AND CURDATE()
在Oracle中,这在语法上是不正确的。
在Oracle中,您可以使用:
尝试:
SELECT TO_CHAR(<dateField>, 'MM/DD/YYYY')
FROM <table>
WHERE <dateField>
BETWEEN SYSDATE AND ADD_MONTHS(SYSDATE, -1);