尝试自动化一个查询,该查询将为当月的日期(在日期字段中)提取数据> = 15。这可能吗?如果是这样,实现这个的语法是什么?
我希望每个月都能运行此查询,而无需更改任何内容。因此,在5月份,它会自动提取日期为> = 5/15/16的任何项目。在6月,它将拉出日期> = 6/15/16的项目。等等......
非常感谢任何帮助。感谢
答案 0 :(得分:3)
这将允许您使用date_field
列上的任何索引:
SELECT *
FROM table_name
WHERE date_field >= TRUNC( SYSDATE, 'MM' ) + INTERVAL '14' DAY
AND date_field < ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 1 );
答案 1 :(得分:1)
如果您的日期/时间字段属于时间戳类型,则可以执行
select x from <your_table>
where EXTRACT(DAY from <timestamp field>) >=15
and EXTRACT(MONTH from <timestamp field>) = EXTRACT(MONTH FROM CURRENT_TIMESTAMP)
and EXTRACT(YEAR from <timestamp field>) = EXTRACT(YEAR FROM CURRENT_TIMESTAMP);
答案 2 :(得分:1)
我认为你所追求的是:
with sample_data as (select 1 id, to_date('01/06/2016', 'dd/mm/yyyy') dt from dual union all
select 2 id, to_date('10/06/2016', 'dd/mm/yyyy') dt from dual union all
select 3 id, to_date('14/06/2016', 'dd/mm/yyyy') dt from dual union all
select 4 id, to_date('15/06/2016', 'dd/mm/yyyy') dt from dual union all
select 5 id, to_date('16/06/2016', 'dd/mm/yyyy') dt from dual union all
select 6 id, to_date('30/06/2016', 'dd/mm/yyyy') dt from dual union all
select 7 id, to_date('01/07/2016', 'dd/mm/yyyy') dt from dual)
select *
from sample_data
where dt >= trunc(sysdate, 'mm') + 14
and dt < last_day(trunc(sysdate)) + 1;
ID DT
---------- ----------
4 15/06/2016
5 16/06/2016
6 30/06/2016
(如果您希望任何日期大于当前月份的15日的行,则删除where子句中的最后一个谓词。)