Govind Asked: 2016-04-29 21:43:41 +0800 CST2016-04-29 21:43:41 +0800 CST 2016-04-29 21:43:41 +0800 CST 如何从周数中查找最后一个日期作为输入 772 当我在存储过程中传递年份和周数作为输入时,我需要找到最后一周的日期。 一周从星期一开始,最后一天是星期五。 数据库 - IBM db2 9.7 平台 - windows 怎么做? db2 3 个回答 Voted Best Answer dnoeth 2016-04-30T00:30:03+08:002016-04-30T00:30:03+08:00 根据您的评论,这似乎是一个ISO 周数,但任何其他编号模式的逻辑都是相同的:取年份并将其转换为今年第一周的第一天,然后(weeknumber -1) * 7添加星期几加上 4 得到星期五。 我不了解 DB2 语法,但快速检查显示支持日期和 NEXT_DAY 的 TRUNC,因此它应该类似于: trunc(cast(cast(year as char(4)) || '-01-04' as date), 'IW') -- first day of the first week based on ISO + (week-1)*7 -- Monday of the actual week number + 4 -- Monday --> Friday Ezequiel Tolnay 2016-04-29T23:42:27+08:002016-04-29T23:42:27+08:00 ( ) 有一个函数NEXT_DAY: NEXT_DAY(DATE(CAST((<year>*1000 + (<week>-1)*7+1) AS CHAR(7)) -1, 'FRI') 感谢dnoeth的提示-1! Govind 2016-04-30T02:17:27+08:002016-04-30T02:17:27+08:00 最后我查询了这个问题的答案—— SELECT NEXT_DAY(CAST(CAST(2016 AS CHAR(4)) || '-01-01' AS DATE)+ ((4-1)*7-1) DAYS,'FRI') FROM SYSIBM.SYSDUMMY1 在这里分享,让其他人也可以学习。
根据您的评论,这似乎是一个ISO 周数,但任何其他编号模式的逻辑都是相同的:取年份并将其转换为今年第一周的第一天,然后
(weeknumber -1) * 7
添加星期几加上 4 得到星期五。我不了解 DB2 语法,但快速检查显示支持日期和 NEXT_DAY 的 TRUNC,因此它应该类似于:
( ) 有一个函数
NEXT_DAY
:感谢dnoeth的提示
-1
!最后我查询了这个问题的答案——
在这里分享,让其他人也可以学习。