【发布时间】:2021-08-24 22:05:33
【问题描述】:
我想在表格中插入:
- 从星期一开始的一周的第一天。
- 一周的最后一天为星期日。
- WEEK 编号 =>(1-52 或 1-53)基于 ISO 标准。
首先我尝试选择特定日期的第一天、最后一天和周数,它的工作原理:
WITH ranges AS
(
SELECT to_date('29-10-2012', 'dd-MM-yyyy') AS DATE_TEST FROM DUAL
)
SELECT DATE_TEST "DATE",
TO_CHAR( NEXT_DAY( TRUNC(DATE_TEST) , 'SUNDAY' )) "WEEK END DATE",
TO_CHAR(TO_DATE(DATE_TEST,'DD-MON-YYYY'),'WW')+1 "WEEK NUMBER"
FROM ranges ;
但现在我想在两个日期之间显示这些数据,但我只得到 start_date 的结果。有人可以帮忙。
之后,当一切顺利时,我会将所有内容都插入表格中。
谢谢
WITH ranges AS(
select to_date('29-OCT-2012', 'dd-MM-yyyy') START_DATE,
to_date('31-DEC-2016', 'dd-MM-yyyy') END_DATE
from dual
)
SELECT START_DATE "DATE",
TO_CHAR( NEXT_DAY( TRUNC(START_DATE) , 'SUNDAY' )) "WEEK END DATE",
TO_CHAR(TO_DATE(START_DATE,'DD-MON-YYYY'),'WW')+1 "WEEK NUMBER"
FROM ranges ;
【问题讨论】:
-
您的第一个代码块产生错误。您的请求逻辑和您的第二个代码块的逻辑根本不匹配。您的查询清楚地要求基于
START_DATE的计算。END_DATE根本不参与。也许重写这个问题。你真的在问如何让ranges输出START_DATE和END_DATE之间所有日期的列表吗? -
@dougp 你是对的,复制/粘贴是我的问题对不起。我用正确的代码块修改了第一个代码块
标签: sql oracle date date-arithmetic