我有一个表 task_details。我需要从这个表中选择它的每周日期。我已经使用ISO 年和ISO 周从该表中提取每周日期,因为我想将其周数提取为 53,如果它是 2015 年 12 月,那么在 12 月 28 日、12 月 29 日、12 月 30 日、12 月 31 日和 1 月 1 日2016 年 1 月 16,2 日,因为此类日期不应分成两个不同的星期。
下面给出了我用于ISO 年和ISO 周的查询。
select
name, id,
to_date(week || ' ' || yr, 'IW IYYY') week_date,
sum(worked_hours) worked_hours_per_week,
week, yr
from (
select
name, id,
newdate, hours worked_hours,
to_number(to_char(newdate, 'IW'), '99') week,
extract( year from newdate) yr
from task_details t
) sub
where worked_hours > 0
group by name, id, to_date(week || ' ' || yr, 'IW IYYY'), week, yr
order by yr, week
几周以来它工作得很好,但后来我在一个日期得到了这个奇怪的结果,以便在表格中记录。
该表没有 2017 年的数据。此外,yr列显示 2016 年,这是所期望的,但是newdate列和week列给出了奇怪的结果。为什么会这样?我该如何解决 ?
这是它的 SQL 小提琴:http ://sqlfiddle.com/#!15/53abf/1