当前位置: 首页 > 知识库问答 >
问题:

sql - Oracle SQL:如何获取去年同周二的日期?

鱼恩
2024-05-13

oracle如何获取去年同周二的日期
比如 今天是 2024-05-07 星期二
如何获取 去年 同周的星期二的日期(2023-05-09)?

oracle如何获取去年同周二的日期
比如 今天是 2024-05-07 星期二
如何获取 去年 同周的星期二的日期(2023-05-09)?

共有2个答案

皇甫德庸
2024-05-13
SELECT TRUNC(SYSDATE, 'IW') - 7 - ADD_MONTHS(12, 0)TRUNC(SYSDATE, 'IW') 周一- 7 周二- ADD_MONTHS(12, 0) 去掉12个月
罗韬
2024-05-13

在 Oracle SQL 中,要获取去年同周的星期二的日期,你需要使用 NEXT_DAY 函数结合 TRUNC 函数以及日期的加减操作。以下是一个可能的 SQL 查询示例,用于实现你的需求:

SELECT NEXT_DAY(TRUNC(ADD_MONTHS(SYSDATE, -12), 'IW') + (TO_CHAR(SYSDATE, 'D') - TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, -12), 'IW'), 'D')) + 1 AS previous_year_same_week_tuesdayFROM DUAL;

解释:

  1. TRUNC(ADD_MONTHS(SYSDATE, -12), 'IW'):这部分首先将当前日期(SYSDATE)减去12个月(即去年),然后使用 TRUNC 函数将其截断到所在周的周一。'IW' 表示 ISO 周。
  2. TO_CHAR(SYSDATE, 'D')TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, -12), 'IW'), 'D'):这两个 TO_CHAR 函数分别获取当前日期和去年同周周一的星期几的数字表示(1代表周日,2代表周一,依此类推)。
  3. (TO_CHAR(SYSDATE, 'D') - TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, -12), 'IW'), 'D')):这部分计算当前星期几与去年同周周一之间的差值。
  4. NEXT_DAY(TRUNC(ADD_MONTHS(SYSDATE, -12), 'IW') + ..., 2):使用 NEXT_DAY 函数找到去年同周的周二。2 代表周二。
  5. 最后,+ 1 是为了修正可能由于周几的差值计算导致的偏移。

这个查询应该返回去年同周的星期二的日期。注意,这个方法假设了每年的同一天都是同一周,这在实际情况下可能并不总是成立,特别是在年末和年初时,因为不同年份的周数可能不同。因此,这个方法可能在某些情况下不够精确。如果需要更精确的处理,可能需要考虑更多的边界条件。

 类似资料:
  • 问题内容: 我想找到星期一,星期二,星期三等的日期戳。如果这个星期还未到这一天,我希望该日期为本周,否则为下周。谢谢! 问题答案: 看到 通过查看星期数,您可能会发现自己是否已经过了这一天:

  • 问题内容: 我正在写一个查询,其中我只需要获取去年的数据。做这个的最好方式是什么? 问题答案: 以下内容将-1年添加到当前日期:

  • 问题内容: 我需要计算一周分配给的年份。例如,将2003年12月29日指定为2004年的第一周(我认为这仅适用于欧洲)。您可以使用以下代码查看一下: 但是,现在我需要一种简单的方法来获取本周的年份。我目前所做的并不那么优雅: 如果有人知道更优雅的方式,那将是很好的:-) 问题答案: 该解决方案没有为date返回正确的值。 以下内容将返回我测试过的所有日期(以及测试了很多时间)的正确值。 摘自:ht

  • 本文向大家介绍Python根据当前日期取去年同星期日期,包括了Python根据当前日期取去年同星期日期的使用技巧和注意事项,需要的朋友参考一下 业务的开发时候有一个需求,需要对比当前时间段和去年同星期的时间段的数据,例如当前时间是2019-04-11,是今年的第十五周的周四,如何去取去年的第十五周的周四呢? 查了好多资料没有对应的处理方法,于是自己写了这个方法,如果您有更好的方法,可以留言。 py

  • 问题内容: 我在String上有个约会,像这样: 我想将其划分为: 做这个的最好方式是什么? 问题答案: 在Java中拆分字符串的一种方法是使用.split(“ regex”),该方法根据提供的模式拆分字符串,并返回String数组。 获取当前日期:您还可以通过更改传递给SimpleDateFormat的值来更改日期格式。不要忘记进口。

  • 当我使用以下代码时,Object错误。 谁能告诉我如何从年、月和日的值中获取Date对象?