【问题标题】:In Oracle SQL, how to get the time for only this current week?在 Oracle SQL 中,如何仅获取本周的时间?
【发布时间】:2015-08-19 19:17:13
【问题描述】:

我有一个查询,我想在其中获取一些不同时间段(本月、本周等)的数据。

对于“本周”列,我希望它获取从最近的星期一到现在的所有数据。我该怎么做?

到目前为止,我有以下 SQL:

WHERE  prla.CREATION_DATE >= SYSDATE - ?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    trunc(sysdate, 'iw') 是您所追求的。 IW 是用于指定日期所在星期的星期一的格式掩码(因为星期一是一周开始的 ISO 标准)。例如:

    with dates as (select trunc(sysdate, 'mm') - 10 + level dt
                   from   dual
                   connect by level <= 40)
    select dt
    from   dates
    where  dt >= trunc(sysdate, 'iw')
    and    dt <= sysdate; -- only needed if the dates in the column could be beyond now.
    

    【讨论】:

    • 保证独立于 NLS -- 很好。
    【解决方案2】:

    是的,可以:但最好使用sysdate-8。因为如果当前日期与您的搜索日期相同,它将返回当前日期。例如。

    select next_day(sysdate-7,'WED') from dual;
    
    OUTPUT
    19-AUG-15
    

    而下面的将给你最后一周

    select next_day(sysdate-8,'WED') from dual;
    
    OUTPUT
    12-AUG-15
    

    【讨论】:

      【解决方案3】:

      您应该截断当前日期。

      TRUNC(SYSDATE, 'DAY')
      

      这应该给你一周的第一天,在很多国家是星期一。

      如果它给你上一个星期日,你应该这样做。

      TRUNC(SYSDATE, 'DAY')+1
      

      【讨论】:

      • 你可能想要 Trunc() 它,但你肯定不想 To_Char() 它。
      • 除了@DavidAldridge 所说的,如果你截断到一天,你只会截断到相关日期的午夜 - 即。你只是摆脱了时间元素。这是 trunc 的默认值,因此 trunc(sysdate)trunc(sysdate, 'dd') 相同。
      • 我认为 DAY、DY 和 D 确实是 NLS_TERRITORY 定义的一周的开始日——DDD、DD 和 J 是当天。 docs.oracle.com/database/121/SQLRF/functions270.htm#i1002084
      • 嗯,这就是我今天学到的新东西。我想我应该更仔细地阅读 trunc/round 的文档,嗯?! *{;-)。感谢您纠正我,@DavidAldridge。 'DAY' 仍然依赖于 nls,所以我仍然会回避它。
      • 我正在积累大约五年没有使用 Oracle 的好处——我必须检查所有内容!
      【解决方案4】:

      我发现现在可以这样做:

      select  next_day (sysdate-7, 'MONDAY') Last_Monday from dual;
      

      所以在我的情况下,我们可以删除 SYSDATE 减法,它很简单:

       prla.CREATION_DATE >= next_day (sysdate-7, 'MONDAY') 
      

      source

      【讨论】:

        猜你喜欢
        • 2019-07-04
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        • 2023-04-04
        相关资源
        最近更新 更多