【问题标题】:Oracle SQL - Week Start Sunday and Week End SaturdayOracle SQL - 星期开始星期天和星期结束星期六
【发布时间】:2021-07-05 09:19:57
【问题描述】:

我有以下查询来显示日期列中的一周开始和一周结束。但它没有显示正确的数据。

trunc(account_date,'iw')-1 week_start,
trunc(account_date,'iw')+7 -1/86400 week_end

星期开始应该是星期日,周末应该是星期六。

根据 01/02/2021 的结果(附后),2021 年 6 月 2 日的周末应该是 2021 年 6 月 2 日。

21 年 7 月 2 日的周开始应为 2021 年 7 月 2 日,周末应为 2021 年 2 月 13 日

感谢任何帮助

TIA

亚西尔

【问题讨论】:

  • 请阅读有关如何在dba.stackexchange.com 上提问的建议。常见的 SO 规则也适用。
  • “iw”不是指“ISO week”,总是从星期一开始吗?

标签: sql oracle date dayofweek


【解决方案1】:

Oracle 将星期一作为一周的开始,而您需要它是星期日。这就是我在 account_date 中添加 +1 的原因。

接下来,您要做的就是将一周的起始日加上 6 天。但是

trunc(account_date,'iw')-1 + 6 = trunc(account_date,'iw')+5

select account_date,  
       trunc(account_date + 1,'iw')-1 week_start,
       trunc(account_date + 1,'iw')+5 week_end
  from your_table;

【讨论】:

  • 您好,感谢您回复我。我使用了您发布的代码,但我得到的日期不正确。对于会计日期 07/02/2021,周开始是 31/01/2021,周末是 06/02/2021。这应该显示为 07/02/2021 周开始和 2021 年 13 月 2 日结束
  • @Yasir 我已通过在 account_date 中添加 +1 来更新答案
  • 太棒了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多