如何在SQL Server中正确使用SET DATEFIRST函数?

时间:2014-10-04 22:45:23

标签: sql sql-server

尝试将日期设置为星期一,然后按星期一开始按“星期几”排序结果。不幸的是,似乎DATEFIRST函数没有做任何事情,我的输出继续认为星期五是一周的第一天。

SET DATEFIRST 1;

SELECT FirstName, LastName, HireDate, datename(dw,HireDate) AS 'Day of the Week'
FROM Faculty
ORDER BY datename(dw,HireDate);

上面的代码产生以下输出:

Lynda   Baker   1989-09-15  Friday
Tim Stewart 2000-09-15  Friday
John    Puckett 1989-09-15  Friday
Maria Lynn  Kessler 2003-09-15  Monday
Leo Dubray  2001-09-15  Saturday
Jamie   Zipay   2001-01-07  Sunday
Michele Malott  2005-09-15  Thursday
Robin   Schwartz    1999-09-15  Wednesday

任何人都知道如何使用DATEFIRST或任何其他功能来让我从周一开始对星期几进行排序?

1 个答案:

答案 0 :(得分:3)

您需要按DATEPART而不是DATENAME订购。

DATEPART返回一个整数,具体取决于DATEFIRST设置。 DATENAME返回一个字符串,其中包含星期几。

字符串'Monday'将始终位于'Friday'之后,因为它按字母顺序排序。