SQL如何使用带剃刀的DATEFIRST

时间:2017-01-30 11:23:03

标签: sql sql-server razor datepart

我已经发现默认情况下DATEPART会在周日开始。如果我不能做到这一点,我们将在星期一开始这一周。

我发现要更改开始日我可以使用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)";

1 个答案:

答案 0 :(得分:0)

您可以通过在查询开头添加SET DATEFIRST 1并以分号“;”

分隔来实现此目的。
var query = "SET DATEFIRST 1; SELECT ... FROM Column WHERE date = @0";

<强>更新: 为什么不直接获取日期并在代码中找到周数