如何使用postresql选择特定周工作的小时数

时间:2015-06-01 02:05:37

标签: sql postgresql

我试图找出员工在4月和3月的特定周工作了多少小时。

当试图找到工作总时数(数值)时,我给出了“日期超出范围”错误。我很确定在我的选择查询中犯了一个简单的错误。有人能指出我有什么不对吗?

如果您只想获得从2015-04-05到2015-04-11的工作小时数,您将如何进行选择查询?如果我能弄清楚如何获得指定周的数字,那么这将帮助我在其他几周内我也需要查看。原谅新生儿的问题,我对SQL很陌生,只有很少的经验。

SELECT

SUM(CASE WHEN hours_worked BETWEEN dateadd(ww,-1,'2015-04-05') AND dateadd(ww,-00,'2015-04-05') THEN r.hours_worked END) AS hours_worked

SUM(CASE WHEN hours_worked BETWEEN dateadd (wk,-1,'2015-3-14') AND dateadd(wk,-0,'2015-3-20')  THEN r.hours_worked END) AS hours_worked

1 个答案:

答案 0 :(得分:0)

这是编写类似于您的查询的一种方法:

SELECT
  name,
  SUM(
    CASE 
    WHEN hours_worked BETWEEN 
      (to_date('2015-04-05', 'YYYY-MM-DD') - interval '7 days')
      AND to_date('2015-04-05', 'YYYY-MM-DD') THEN 1
    ELSE 0
    END
  ) AS number_of_records
from test
group by name

to_date函数将字符串转换为日期。

- interval '7 days'告诉PostgreSQL去上周。

使用上述查询中的提示,您应该能够满足您的需求。