2015-06-01 27 views
0

我試圖找出員工在四月和三月的特定幾周工作了多少小時。如何選擇使用postresql在特定周工作的小時數

當試圖找到工作的總小時數(數值)時,我給出了「日期超出範圍」錯誤。我確信我在我的選擇查詢中犯了一個簡單的錯誤。有人能指出我有什麼問題嗎?

如果您只想獲得從2015-04-05到2015-04-11工作的小時數,您將如何進行選擇查詢?如果我能弄清楚如何獲得特定星期的數字,那麼在我需要查看的其他幾周內,這將有助於我。赦免新問題,我還是一個新手,幾乎沒有什麼經驗。

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 
+0

您正在使用SQL Server語法,但問題標記爲Postgres。 –

+0

是'dateadd'自定義存儲過程?請參閱:http://www.sqlines.com/postgresql/how-to/dateadd – vol7ron

+0

我使用Postgres,所以也許這就是我的問題所在? –

回答

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去上週。

使用上述查詢中的提示,您應該能夠滿足您的需求。

+0

謝謝你。 我只是嘗試在我的選擇輸入,但我得到了一堆零。該選擇查詢會幫助我獲得2015-04-05至2015-04-11之間的小時數值嗎? –

+2

@AllenM你可以通過發佈你的表格結構,一些示例數據,你使用的查詢和你想要的結果(不是你得到的結果)來編輯你的問題嗎?基於此,我可以通過改進查詢來提供幫助 – zedfoxus

相關問題