根据日期参数从表中选择周末或工作日数据
Posted
技术标签:
【中文标题】根据日期参数从表中选择周末或工作日数据【英文标题】:Select weekend or weekday data from a table based on date param 【发布时间】:2013-08-17 14:52:24 【问题描述】:如何从基于工作日或周末的表格中选择数据,例如 如果日期是工作日,则仅从表中选择历史工作日数据 & 如果日期是周末,则仅选择历史周末数据。
我曾尝试以这种方式做到这一点,但没有运气
DECLARE @MyDate DATE = '08/17/2013'
SELECT datename(dw,@MyDate)
SELECT * FROM MyTable
WHERE
datename(dw,DateColumnInTable) IN (
CASE WHEN (datename(dw,@MyDate) IN ('Saturday','Sunday')) THEN '''Saturday'',''Sunday'''
ELSE 'Monday'',''Tuesday'',''Wednesday'',''Thursday'',''Friday'
END )
我可以在我的表中看到周六和周日的大量数据,但这个查询给了我空白记录集。
【问题讨论】:
为什么要投反对票?我先尝试过,然后在谷歌上搜索,然后搜索 SO,我的问题不是主观的。我哪里错了? 【参考方案1】:这是一种方法:
DECLARE @MyDate DATE = '08/17/2013'
IF (DATEPART(weekday, @MyDate) IN (1,7))
SELECT *
FROM MyTable
WHERE DATEPART(weekday, DateColumnInTable) IN (1,7)
ELSE
SELECT *
FROM MyTable
WHERE DATEPART(weekday, DateColumnInTable) BETWEEN 2 AND 6
如果您想在一个子句中执行此操作,您可以执行以下操作,但效果可能会更差:
SELECT *
FROM MyTable
WHERE (DATEPART(weekday, @MyDate) IN (1,7) AND DATEPART(weekday, DateColumnInTable) IN (1,7))
OR (DATEPART(weekday, @MyDate) BETWEEN 2 AND 6 AND DATEPART(weekday, DateColumnInTable) BETWEEN 2 AND 6)
【讨论】:
DATEPART(weekday,...) 不确定 @BogdanSahlean 不,不是,但您可以使用日期表并加入其中,或参考***.com/questions/1803561/… @Ic 我的 Select 子句很大,我可以在一个子句中完成吗? @Zerotoinfinite 已编辑以包含一个选项 @Ic。非常感谢:) 但我仍然不知道为什么我投了反对票。不过,感谢您的推动以上是关于根据日期参数从表中选择周末或工作日数据的主要内容,如果未能解决你的问题,请参考以下文章