Oracle SQL从月末检索数据 - 16日和15日 - 1日

时间:2015-12-01 18:43:09

标签: sql oracle system-databases

好的,所以我试图检索一个字段,我们将调用DATE_OF_ENTRY,字段就是这样。

示例DATE_OF_ENTRY数据

28-NOV-15

因此,我需要在一个脚本中使用此字段,该脚本每月运行两次以提取某些记录。基本上当它是当月的第16天时,我希望从1日到15日的所有记录都被拉起来。当我在下个月1日运行这个脚本时,我想要上个月16日结束时的所有记录。

我现在使用的是什么

WHERE ROUND(DATE_OF_ENTRY,'MM') = ROUND(sysdate-1,'MM') AND DATE_OF_ENTRY < trunc(sysdate)

这个陈述的问题在于它在上一个月的第16个到第1个的第1个工作,但在16日它仍然从上个月获得数据。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

TRUNC()函数与MONTH参数一起使用将获得该月的第一天。

TRUNC()功能与DATE_OF_ENTRY一起使用将删除TIME部分。

使用+运算符将日期添加到DATE

 SELECT TRUNC(sysdate, 'MONTH') firstDay,
        TRUNC(sysdate, 'MONTH') + 15 Day15,
        *
 FROM yourTable
 WHERE TRUNC(DATE_OF_ENTRY) >= TRUNC(sysdate, 'MONTH')
   AND TRUNC(DATE_OF_ENTRY) <= TRUNC(sysdate, 'MONTH') + 15