gpt4 book ai didi

sql-server - 检查日期范围是否有周末

转载 作者:行者123 更新时间:2023-12-03 10:05:19 25 4
gpt4 key购买 nike

如果我有 2 个日期,我知道我可以使用 datediff 算出这两个日期之间有多少天、小时、分钟等。 ,例如:

declare @start datetime;
set @start = '2013-06-14';

declare @end datetime;
set @end = '2013-06-15';

select datediff( hour, @start, @end );

如何确定日期范围是否包括周末?

我想知道日期范围是否包括周末的原因是因为我想从天数或小时数中减去周末。即如果开始日期是星期五,结束日期是星期一,我应该只有 1 天或 24 小时。

我的服务器上的日期部分 1 = 星期日,日期部分 7 = 星期六。

最佳答案

我有一个计算两个日期之间工作日的函数,基本查询是

declare @start datetime;
set @start = '2013-06-14';

declare @end datetime;
set @end = '2013-06-17';
SELECT
(DATEDIFF(dd, @Start, @end) +1) -- total number of days (inclusive)
-(DATEDIFF(wk, @Start, @end) * 2) -- number of complete weekends in period
-- remove partial weekend days, ie if starts on sunday or ends on saturday
-(CASE WHEN DATENAME(dw, @Start) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @end) = 'Saturday' THEN 1 ELSE 0 END)

因此,如果工作日与 datediff 以天为单位不同,则您可以计算出日期是否包括周末
  SELECT case when  (DATEDIFF(dd, @Start, @end) +1) <>
(DATEDIFF(dd, @Start, @end) +1) -- total number of days (inclusive)
-(DATEDIFF(wk, @Start, @end) * 2) -- number of complete weekends in period
-- remove partial weekend days, ie if starts on sunday or ends on saturday
-(CASE WHEN DATENAME(dw, @Start) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @end) = 'Saturday' THEN 1 ELSE 0 END) then 'Yes' else 'No' end as IncludesWeekends

或更简单的
SELECT   (DATEDIFF(wk, @Start, @end) * 2) +(CASE WHEN DATENAME(dw, @Start) = 'Sunday' THEN 1 ELSE 0 END)      +(CASE WHEN DATENAME(dw, @end) = 'Saturday' THEN 1 ELSE 0 END)  as weekendDays

关于sql-server - 检查日期范围是否有周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17111065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com