【问题标题】:How to get data from first day of the month until yesterday如何获取每月第一天到昨天的数据
【发布时间】:2017-02-13 04:03:52
【问题描述】:

有谁知道从该月的第一天到昨天获取数据的查询?我尝试使用下面的查询,但问题是今天是本月的第一天,所以值介于 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 到 31-01-2017 的数据,但如果今天是 13-02-2017 我想从 01- 中选择数据02-2017 至 12-02-2017,谢谢之前

【问题讨论】:

  • 首先,你在做“字符算术”;你应该做日期算术。
  • 在这种极端情况下会发生什么?

标签: oracle date


【解决方案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

此查询假定您有一个名为 someDateDATE 列。

【讨论】:

  • 对不起先生,我认为我的问题是错误的,我已经编辑了我的问题,但这也很有用,谢谢
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 2014-09-07
  • 2019-03-04
  • 2020-09-30
  • 2020-10-02
  • 2021-06-11
  • 1970-01-01
相关资源
最近更新 更多