查询以获取实际月份的记录'没有给我那些比当前更大的记录

时间:2016-10-27 14:28:02

标签: sql database oracle date sql-date-functions

我有以下查询来从当前月份的表中获取记录

select *
from 
   myTable 
where 
   my_date BETWEEN trunc (sysdate, 'mm') AND SYSDATE;

如果记录与当前记录相比具有较低的日期,则此查询有效 示例:如果今天是27/10/2016并且我有一个具有此日期的记录:28/10/2016 日期28/10/2016的记录未显示

我使用此格式TO_DATE( '28/10/2016 18:02:44', 'dd/mm/yyyy hh24:mi:ss')

插入记录

我想显示当前月份的所有记录,即使日期大于实际日期

2 个答案:

答案 0 :(得分:3)

或者:

select *
from 
   myTable 
where 
   my_date BETWEEN trunc (sysdate, 'mm') AND add_months(trunc (sysdate, 'mm'),1)- 1/(24*3600)

select *
from 
   myTable 
where 
   trunc(my_date,'mm') = trunc (sysdate, 'mm') 

第一个是sargable,第二个是更具可读性。

答案 1 :(得分:1)

如果您需要当月的日期

trunc(my_date, 'mm') = trunc(sysdate, 'mm')

如果您需要当月和日期的日期:

my_date >= trunc(sysdate, 'mm')