是否有人知道从月份的第一天到昨天获取数据的查询?我尝试使用下面的查询,但问题是今天是当月的第一天,所以该值在20170201和20170131之间
select * from a where to_char(DATE,'yyyymmdd') BETWEEN to_char(sysdate,'yyyymm')||'01' and to_char(sysdate-1,'yyyymmdd')
例如:如果今天是01-02-2017我想选择01-01-2017至2017年3月31日的数据,但如果今天是13-02-2017我想从01-中选择数据02-2017至2017年2月12日,感谢之前
答案 0 :(得分:1)
此问题已根据您的新逻辑进行了更新。以下查询将在以下条件下保留记录:
someDate
介于当月的第一天和昨天之间,或someDate
,今天是本月的第一天,在上个月落在任何地方
SELECT *
FROM yourTable
WHERE someDate BETWEEN CASE WHEN EXTRACT(DAY FROM SYSDATE) = 1
THEN TRUNC(SYSDATE-1, 'MONTH')
ELSE TRUNC(SYSDATE, 'MONTH') END AND
CASE WHEN EXTRACT(DAY FROM SYSDATE) = 1
THEN TRUNC(SYSDATE, 'MONTH') - 1
ELSE TRUNC(SYSDATE - 1) END
此查询假定您有一个名为DATE
的{{1}}列。