【发布时间】:2016-05-24 10:25:01
【问题描述】:
我有一张表 task_details。我需要从此表中选择它的每周日期。我已使用 ISO Year 和 ISO Week 从该表中提取每周日期,因为我想将其周数提取为 53,如果它是 2015 年 12 月,然后是第 28 天Dec,29 Dec,30 Dec,31 Dec 和 1 Jan '16,2 Jan '16 因为对于这些日期,它不应该分开两个不同的星期。
我用于ISO Year & 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
【问题讨论】:
-
非常有创意的格式。您可能对这个小帮助页面感兴趣:stackoverflow.com/editing-help。更新格式时,请记住包含您的 Postgres 版本和正确的表定义。
标签: postgresql date sum dayofweek isodate