3

我正在编写一个 Java 程序,我需要从 Oracle 数据库中选择当月的记录。任何时候我需要为我使用的当天选择记录:

select * from purchases where purchase_date = to_char(sysdate, 'DD-MON-YYYY')

我应该使用什么方法从当前月份中选择记录?在表格中,日期显示如下:

10/4/2012 //for 4th October 2012

我试过

select * from purchases where purchase_date like to_char(sysdate, 'MON-YYYY')

这当然选择什么,请协助。

4

2 回答 2

9

如果purchase_date是日期。

select * 
from 
   purchases 
where 
   purchase_date >= trunc(sysdate,'mm')

如果purchase_date是 VARCHAR

select * 
from 
   purchases 
where 
   to_date(purchase_date,'mm/dd/yyyy') >= trunc(sysdate,'mm')

trunc(sysdate,'mm') 截断当前日期,保留月份,显然是年份,因此10/04/2012 08:58被截断为10/01/2012 00:00.

于 2012-10-04T13:17:31.973 回答
0

假设 purchase_date 是 aVARCHAR2并且格式类似于DD-MON-YYYY,情况似乎如此,那么:

select * from purchases where trunc(to_date(purchase_date,'DD-MON-YYYY'),'MONTH') = trunc(sysdate,'MONTH')
于 2012-10-04T15:55:41.733 回答