【问题标题】:Exclude weekend days in my where clause filter在我的 where 子句过滤器中排除周末
【发布时间】:2020-12-31 20:38:34
【问题描述】:

我使用的是 SQL Server 2014。我有以下查询:

Use MyDatabase

select *
from Table1    
where [CreatedOn] between '2019-01-01' and '2019-12-31'

我需要按[CreatedOn] 进行过滤,以便排除指定日期之间的所有周六和周日。

执行此操作的正确语法是什么?

【问题讨论】:

标签: sql-server tsql


【解决方案1】:
Where [CreatedOn] between '2019-01-01' and '2019-12-31'
  and DATEPART(WEEKDAY,[CreatedOn]) not in (6, 7) 

请注意,在某些文化中,星期日是一周的第一天。如果是这种情况,您需要将 not in (6, 7) 更改为 not in (7, 1)

您可以通过SELECT @@DATEFIRST查看一周的第一天

【讨论】:

  • 当我运行 SELECT @@DATEFIRST 时,我得到 7。所以,我想我需要使用“not in (7,1)”。
  • @user3115933 ( @@DateFirst + DatePart( weekday, CreatedOn) - 1 ) % 7 + 1 将始终返回一个从17 的整数,其中1 对应于星期日,而不管DateFirstLanguage 的设置如何。
猜你喜欢
  • 2016-07-02
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多