2012-03-16 54 views
0

我想根據時間表表格運行每週報告(從週一到週日),以便我可以查看正在請求和預訂的工作類型。如何從我的存儲過程運行每週報告?

timesheets桌子上有一個start_dtmend_dtm

我將如何運行一個查詢一週的檢查開始和結束?

編輯:我有下面的代碼抓起開始和結束日期:

--------------------------------- 
--Please set your appropriate values for @REPORT_DATE and @WEEK_BEGINING 
DECLARE @REPORT_DATE DATETIME, @WEEK_BEGINING VARCHAR(10) 
SELECT @REPORT_DATE = '2012-03-16T00:00:00' 
SELECT @WEEK_BEGINING = 'MONDAY' 
IF @WEEK_BEGINING = 'MONDAY' 
SET DATEFIRST 1 
ELSE IF @WEEK_BEGINING = 'TUESDAY' 
SET DATEFIRST 2 
ELSE IF @WEEK_BEGINING = 'WEDNESDAY' 
SET DATEFIRST 3 
ELSE IF @WEEK_BEGINING = 'THURSDAY' 
SET DATEFIRST 4 
ELSE IF @WEEK_BEGINING = 'FRIDAY' 
SET DATEFIRST 5 
ELSE IF @WEEK_BEGINING = 'SATURDAY' 
SET DATEFIRST 6 
ELSE IF @WEEK_BEGINING = 'SUNDAY' 
SET DATEFIRST 7 
DECLARE @WEEK_START_DATE DATETIME, @WEEK_END_DATE DATETIME 
--GET THE WEEK START DATE 
SELECT @WEEK_START_DATE = @REPORT_DATE - (DATEPART(DW, @REPORT_DATE) - 1) 
--GET THE WEEK END DATE 
SELECT @WEEK_END_DATE = @REPORT_DATE + (7 - DATEPART(DW, @REPORT_DATE)) 
PRINT 'Week Start: ' + CONVERT(VARCHAR, @WEEK_START_DATE) 
PRINT 'Week End: ' + CONVERT(VARCHAR, @WEEK_END_DATE) 
---------------------------------------------- 
+0

這裏需要更多的細節。你爲什麼要檢查一週的開始和結束? – 2012-03-16 09:05:43

+0

增加了一些修改 – 2012-03-16 09:51:25

+0

反對?爲什麼?? – 2012-03-16 12:58:50

回答

1

您可以使用此SQL來確定給定日期

SET DATEFIRST 1 
DECLARE @Date date = GETDATE() --give a date here 

SELECT 
    @Date [SelectedDate], 
    DATENAME(dw, @Date) [SelectedWD], 
    DATEADD(dd, -(DATEPART(dw, @Date)-1), @Date) [WeekStart], 
    DATENAME(dw, DATEADD(dd, -(DATEPART(dw, @Date)-1), @Date)) [WeekStartWD], 
    DATEADD(dd, 7-(DATEPART(dw, @Date)+2), @Date) [WeekEnd], 
    DATENAME(dw, DATEADD(dd, 7-(DATEPART(dw, @Date)+2), @Date)) [WeekEndWD] 

**Example output** 
SelectedDate SelectedWD WeekStart WeekStartWD WeekEnd  WeekEndWD 
2012-03-16  Friday  2012-03-12 Monday  2012-03-16 Friday 

當週的週一和週五--------------------- ------------------------編輯------------------------- --------------------
用法

這給你的結果1周(僅平日)

SET DATEFIRST 1 
DECLARE @Date date = GETDATE() --give a date here 
DECLARE @WeekStart Date, @WeekEnd Date 

select @WeekStart = DATEADD(dd, -(DATEPART(dw, @Date)-1), @Date), 
@WeekEnd = DATEADD(dd, 7-(DATEPART(dw, @Date)+2), @Date) 

SELECT * FROM myTable WHERE myDate BETWEEN @WeekStart AND @WeekEnd 
+0

我已添加編輯 – 2012-03-16 09:53:05

+0

您可以將'WeekStart'和'WeekEnd'列中的值用作邊界值。 **例如:**在哪裏MyDate BETWEEN @WeekStart AND @WeekEnd – adyusuf 2012-03-16 09:56:06

+0

您能向我解釋你的代碼嗎?我有點不高興。對不起 – 2012-03-16 10:12:50

1

你究竟如何編寫查詢將取決於您的需求 - 當你運行報告等調查DateAdd功能和/或關鍵字BETWEEN

+0

添加了一些修改 – 2012-03-16 09:51:41