SQL如何使用DATEFIRST和剃须刀
问题描述:
我已经知道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)";
答
您可以通过在查询开头添加SET DATEFIRST 1并以分号“;”分隔开来实现该目的。
var query = "SET DATEFIRST 1; SELECT ... FROM Column WHERE date = @0";
更新: 你为什么不只是得到的日期,并在代码中查找
我通常建议不要使用'DATEFIRST'并试图避免取决于编写代码的周数对该设置的任何特定值。在这种情况下,我看不到一个明显的简单转换,但这是我的目标。 –