当前位置:首页 » 编程语言 » sql工作日函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql工作日函数

发布时间: 2022-08-20 05:10:26

sql怎样获取工作日

SELECT datename(weekday, getdate())
返回结果是 星期三

② workday函数 sql 怎么用

WorkDays函数用于获取给定时间段内的工作天数,工作天数是指除周六日外的天数,不考虑法定假日的情况.
例如:要计算出2010年5月1日至2010年5月31日的全勤天数,可以这样定义公式:全勤天数=workDays(#2010/5/1#,#2010/5/31#),计算后结果是21.

③ SQL语句计算两个日期之间有多少个工作日的方法

/*
因为工作中一个奇怪的需求,要用SQL语言计算两个日期间有多少个工作日。
设定是一个星期有5个工作日,从星期一到星期五
说明:
第一个星期的工作日数:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天
末一个星期的工作日数:DATEPART(dw, @enddt),最多5天
计算方法:
如果两个日期处在同一个星期内,直接计算“第一个星期的工作日数”
否则按下面的公式计算
(两个日期间的总天数 - 第一个星期的天数 - 末一个星期的天数) / 7 * 5
+ 第一个星期的工作日数
+ 末一个星期的工作日数
*/

--计算并返回两个日期间的工作小时数(工作日*8)按周一到周五计算
--必须先SET DATEFIRST 1
CREATE FUNCTION dbo.CalcWorkHours(@bdate DATETIME, @edate DATETIME)
RETURNS INTEGER
AS BEGIN
DECLARE @hours INTEGER
IF @@DATEFIRST <> 1 OR @bdate > @edate
RETURN -1
SELECT @hours =
--如果终止日期与起始日期在同一个星期内,只需要计算有几天即可
CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN
CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0
WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)
ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END
--如果终止日期与起始日期在不同的星期内
--首先计算出除前后两个星期外完整的星期数 * 5
ELSE (DATEDIFF(dd,@bdate,@edate)
- (8-DATEPART(dw, @bdate))
- DATEPART(dw, @edate-1)) / 7 * 5
--再加上第一个星期里的工作日数
+ CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)
ELSE 0 END
--加上末一个星期里的工作日数
+ CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END
END * 8
RETURN @hours
END

④ SQL怎么实现所有日期对应的上一工作日和下一工作日

select dateadd( day, -1, getdate() ) 上一工作日,
getdate() 当前工作日,
dateadd(day,1,getdate() ) 下一工作日

⑤ sql 查询几个工作日之后的日期

select datediff('2009-1-1', '2008-1-1');

用datediff函数,第一个参数是截止时间,第二个参数是起始时间

不好意思,刚才的是mysql,刚看了下sql的文档发现有点区别- -,sql的话,用下面的形式:
DATEDIFF ( datepart , startdate , enddate )

所以你要求2个日期之间间隔的天数,这样写:

datediff( dd, '2008/1/1', '2009/1/2' )

这里的dd表示计算天数差

⑥ informix中用sql或者存储过程取上一个工作日的日期(就是除星期六、星期天,国家法定节日外)

在informix的存储过程中,截取字符串和在informix的sql里一样,都是用sting[beg,end]这种方式,比如str=abcdefg,想取第4和第5个字符,就用str[4,5],得到“de”。
informix存储过程中取当天日期用TODAY,在别的文章里说这是个函数,我说还不如算个变量,因为函数的引用是后面要加括号的,比如getage(id),而这个是不能带括号的,直接用TODAY:
date mydate;
mydate=TODAY;

⑦ SQL语句计算两个日期之间有多少个工作日

EXCEL怎么自动计算出两个日期之间相隔几个工作日的解决方法如下: 1、用公式可以:=NETWORKDAYS(a1,b1,"2012-5-1"), 2、节假日要自己手动列出来, 3、NETWORKDAYS函数要安装了“分析工具箱”之后才能使用。

⑧ SQL中指定工作时间和非工作时间的语句

--计算工作日的审核数量

select COUNT(*) from #a
where DATEPART(W,date) not in(1,7)--1为星期日7为星期六
and convert(varchar(8),date,114) between '08:30:00' and '17:30:00'
--其他的自己改改

⑨ 如何使用sql语句计算工作日(除去周六周日以及法定节假日)

最多只能除去周六周日,法定假日是自己国家规定的,需要单独处理的亲。