如何仅从周末拉行?

Vin*_* _S 4 sql-server-2008 sql-server t-sql

我的表数据是这样的:

ID   Name salary   date
1     a    100     1/08/2014
2     b    200     2/08/2014
.
.
.
.
26     z   2600    26/8/2014
Run Code Online (Sandbox Code Playgroud)

现在我只想返回周六或周日的行,例如:

ID   Name salary   date
2    ------------------------
3     -----------------------
9
10
16
17
23
24
30
31 -------------------------
Run Code Online (Sandbox Code Playgroud)

Tho*_*ger 8

使用DATENAME()函数并将日期部分指定为weekday.

select ID, Name, Salary, Date
from dbo.yourTable
where datename(weekday, Date) in ('Saturday', 'Sunday');
Run Code Online (Sandbox Code Playgroud)

正如 Aaron 指出的那样,这取决于将语言设置为英语。同样,您可以将该DATEPART()函数与weekday和测试星期六和星期日的值一起使用。


Sea*_*ean 5

每个人都在提出依赖于设置语言或日期的解决方案。但是,假设您仅查找 1900 年 1 月 1 日之后的日期(周一)

SELECT ID
       ,Name
       ,Salary
       ,Date
FROM <Table_Name>
WHERE DateDiff(dd, 0, Date) % 7 in (5,6)
Run Code Online (Sandbox Code Playgroud)

无论任何设置,由于 0(或 1900-01-01)是星期一,因此星期六和星期日的模数始终分别为 5 或 6。