我花了很多時間試圖弄清楚如何做到這一點,但做不到。所以請幫助我。動態獲取weekStart和weekEnd?
我有這樣的數據:
ID employee_id worked_date start_time finish_time
1 1 2013-09-25 09:00:00 17:30:00
2 1 2013-09-26 07:00:00 17:00:00
8 1 2013-10-01 09:00:00 17:00:00
9 1 2013-10-04 09:00:00 17:00:00
12 1 2013-10-07 09:00:00 17:00:00
13 1 2013-10-10 09:00:00 17:00:00
14 1 2013-10-11 09:00:00 17:00:00
我一週的第一天是星期三。基準日期是2013年9月25日星期三。我需要能夠動態地獲取weekStart和weekEnd。例如,根據我上面提供的數據,2013年9月25日至2013年10月11日之間有三個星期。我先用最新的working_date命令我的數據。如果用戶請求第3周,則weekStart應爲2013-09-25,並且weekEnd應爲2013-10-01。如果用戶請求week2,那麼weekStart應該是2013-10-02到2013-10-08等等。
參數week將被動態傳遞。謝謝你的幫助。
這裏是我想要實現時所要求的每週3結果:
ID employee_id worked_date start_time finish_time weekStart weekEnd
1 1 2013-09-25 09:00:00 17:30:00 2013-09-25 2013-10-01
2 1 2013-09-26 07:00:00 17:00:00 2013-09-25 2013-10-01
8 1 2013-10-01 09:00:00 17:00:00 2013-09-25 2013-10-01
使用該查詢會給我weekStart和週末爲每個記錄
SELECT *, dateadd(week, datediff(day,'20000105',worked_date)/7, '20000105') AS WeekStart ,
dateadd(week, datediff(day,'20000105',worked_date)/7, '20000105') + 6 AS WeekEnd
FROM Timesheet
但我不想要這個。我只需要用戶請求的特定周。
使用該查詢會給我weekStart和週末爲每個記錄SELECT * ,DATEADD(周,DATEDIFF(日, '20000105',worked_date)/ 7, '20000105')AS WeekStart ,DATEADD(周,DATEDIFF (day,'20000105',working_date)/ 7,'20000105')+ 6 AS WeekEnd FROM Timesheet。但我不想要這個。我只需要用戶請求的特定周。 – loveprogramming
那麼你如何確定9-25-2013是第三個星期呢? – jcwrequests
這是基於此查詢的第三週:WITH CTE AS( \t \t \t \t \t SELECT僱員,DENSE_RANK()OVER(ORDER BY DATEDIFF(DAY '' 20130925',worked_date)/ 7 DESC)AS weekRank \t \t \t \t \t FROM時間表 \t \t \t \t \t) \t \t \t \t \t SELECT TOP(1)weekRank \t \t \t \t \t FROM CTE \t \t \t \t \t WHERE僱員= @ EMPLOYEE_ID \t \t \t \t \t ORDER BY weekRank DESC。我倒計數以確定自2013-09-25以來該員工迄今爲止工作了多少周。 – loveprogramming