sql第一个星期一的日期函数

368yc8dk  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(362)

我想编写一个oraclesql函数,传递周数(一年中的一周)和年(32020),函数返回本周的第一天(实际上是星期一)。
功能1(32020)--->
产量:13.1.2020

r7xajy2e

r7xajy2e1#

我会先计算一年中的第一个星期一。这可以使用格式说明符来完成 'IW' :

trunc(trunc(to_date(:year, 'YYYY'), 'YYYY'), 'IW')

然后,您可以添加请求的周数:

trunc(trunc(to_date(:year, 'YYYY'), 'YYYY'), 'IW') + (:week - 1) * 7

db小提琴演示:

select trunc(trunc(to_date('2020', 'YYYY'), 'YYYY'), 'IW') + (3 - 1) * 7 res from dual
| RES       |
| :-------- |
| 13-JAN-20 |

您可以很容易地将代码放入函数中。

hgqdbh6s

hgqdbh6s2#

SELECT CASE
           WHEN :weeknum = 1
           THEN
               TRUNC(to_date('01.01.'||:Year), 'yyyy')
           ELSE
               NEXT_DAY(TRUNC(to_date('01.01.'||:Year), 'yyyy') - 1, 'Son')
               + (:weeknum
                  - DECODE(
                        NEXT_DAY(TRUNC(to_date('01.01.'||:Year), 'yyyy') - 1, 'Son'),
                        TRUNC(to_date('01.01.'||:Year), 'yyyy'), 1,
                        2
                    ))
                 * 7
       END +1
           weekstart
  FROM DUAL;

相关问题