2017-01-30 98 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服务器精简版和剃须刀 –