2017-01-30 65 views
0

我已經知道DATEPART默認情況下在週日開始一週。我來自哪裏,我們不這樣做,我們從星期一開始。SQL如何使用DATEFIRST和剃鬚刀

我發現改變開始日我可以使用DATEFIRST 1,但是我不知道如何實現它。

主要是因爲每當我在這裏看到SQL代碼時,它的格式如下所示。

SELECT 
    date, name 
FROM 
    Column 
WHERE 
    date = @0 

,但我不喜歡這樣

var query = "SELECT date, name FROM Column WHERE date = @0"; 

只是一個例子。

我真的不知道如何使用我的示例的第一個版本,所以我總是將其轉換爲我如何使用它,但我不知道如何處理SET DATEFIRST 1以便數據庫將使用它並啓動我星期一的星期。

我想對下面的查詢做到這一點。

var query = "SELECT DATEPART(wk, date) as wknumber, sum((kg * rep * sett)) as weight, sum(kg/max * rep * sett) as avg, sum((rep * sett)) as reps, max(kg/max) as peak FROM Test WHERE date between @0 and @1 AND exercise < 4 GROUP BY DATEPART(wk, date)"; 
+0

我通常建議不要使用'DATEFIRST'並試圖避免取決於編寫代碼的週數對該設置的任何特定值。在這種情況下,我看不到一個明顯的簡單轉換,但這是我的目標。 –

回答

0

您可以通過在查詢開頭添加SET DATEFIRST 1並以分號「;」分隔開來實現該目的。

var query = "SET DATEFIRST 1; SELECT ... FROM Column WHERE date = @0"; 

更新: 你爲什麼不只是得到的日期,並在代碼中查找

+0

給我「無法識別的SET語句」。 –

+0

您使用的是ADO.net嗎? – MJK

+0

SQL服務器精簡版和剃鬚刀 –