【问题标题】:Calculate business day in SQL Server在 SQL Server 中计算工作日
【发布时间】:2016-02-20 14:24:26
【问题描述】:

我创建了一个查询来获取StartDate 之前两天和EndDate 之后两天之间的员工。它适用于周二和周四的StartDate。如果这些日子落在周五到周一,它将无法正常工作。我不想在周六和周日计算。

这是我的查询:

select
    FirstName, 
    LastName, 
    StartDate, 
    EndDate
from 
    Students
where 
    StartDate > GetDate()-2 
    AND EndDate < GetDate() +2

如何将其更改为仅计算工作日?

非常感谢!

【问题讨论】:

  • 如果GETDATE() 是周五,您想查看下周一或周二结束的学生吗?
  • 哇,我还没想过这个。我的主要观点是列出所有 StartDate 距离今天不到 2 天和今天之后 2 天的学生,不包括周末(周六和周日)。谢谢。
  • 所以,只是为了确认:周末开始的学生永远不会被您的查询列出,无论它在哪一天运行;您的查询将返回三天(如果您在周一或周五运行查询)、四天(如果您在周二或周四运行)或五天(如果您在周三运行)的学生?
  • 哦,我从周一到周五每天早上都运行查询。我正在尝试向当前日期前 2 天和后 2 天的所有学生发送警报消息。如果学生周一结束,他应该在上周五收到此消息。

标签: sql sql-server


【解决方案1】:

如果我理解正确,您的开始日期不能是周末。要排除周末开始的学生,请在 where 子句中添加 AND datepart(dw, StartDate) not in (1,7)

select
    FirstName, 
    LastName, 
    StartDate, 
    EndDate
from 
    Students
where 
    StartDate > GetDate()-2 
    AND EndDate < GetDate() +2
    AND datepart(dw, StartDate) not in (1,7)

希望这会有所帮助。如果此答案对您有用,请务必检查向上箭头!

【讨论】:

    猜你喜欢
    • 2020-01-19
    • 2021-12-18
    • 1970-01-01
    • 2022-01-17
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多