如何从表

时间:2015-10-26 05:53:13

标签: sql oracle

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 DAYNOW()等其他功能无效,也会引发类似错误。我无法处理SYSDATE检索到的日期,因为我无法使用DATE_FORMAT函数对其进行转换。我现在可以做什么?

3 个答案:

答案 0 :(得分:0)

这应该有希望。

where子句是查找当前服务器时间(now()),并从中获取一个月,然后测试日期字段是否大于该值。

SELECT  DATE_FORMAT(<dateField>, '%m/%d/%Y')
FROM <table>
WHERE <dateField> >= date_sub(now(), interval 1 month) 

答案 1 :(得分:0)

将mysql BETWEENCURDATE一起使用: -

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中,您可以使用:

  • TO_CHAR 以所需格式显示日期。
  • SYSDATE 获取当前日期。
  • ADD_MONTHS 返回一个月

尝试:

SELECT  TO_CHAR(<dateField>, 'MM/DD/YYYY')
FROM <table>
WHERE <dateField>
BETWEEN SYSDATE AND ADD_MONTHS(SYSDATE, -1);
相关问题