在统计工作效率的时候,只计算工作时候非常重要
写了一个一般性工作时间计算的函数
CREATE FUNCTION fun_GetWorkMinute
(
@startDate DATETIME ,
@endDate DATETIME
)
RETURNS int
AS
begin
declare @DayMinute int,@s_Minute int,@s_Minute2 int
set @DayMinute = 7*60 --一天工作7个小时
set @s_Minute = 11*60 + 30 --上午11:30下班
set @s_Minute2 = 14*60 --下午14上班
declare @minute int,@day int,@totalDay int
set @minute = 0
if @startDate is not null and @endDate is not null
begin
set @totalDay = datediff(day,@startDate,@endDate)
set @day = @totalDay/7 ---周
if @day > 0
set @minute = @minute + @day*5* @DayMinute
declare @sM int,@sM2 int
set @sM = datepart(hour,@startDate)*60 + datepart(minute,@startDate)
set @sM2 = datepart(hour,@endDate)*60 + datepart(minute,@endDate)
set @day = @totalDay - @day * 7
if @day > 0
set @minute = @minute + @day* @DayMinute
--同一个上下午段,非工作时间也类同
if (@sM >= @s_Minute2 AND @sM2 >= @s_Minute2) or (@sM <= @s_Minute AND @sM2 <= @s_Minute)
set @minute = @minute - @sM + @sM2
else if (@sM >= @s_Minute2) --上午到下午
set @minute = @minute - @sM + @sM2 + @s_Minute2 - @s_Minute
else --下午到下一天的上午
set @minute = @minute - @sM + @sM2 - @s_Minute2 + @s_Minute
end
return @minute
end


对于五一,十一没有作处理,需要加工作日管理的模块
posted on
2005-06-27 19:45
edobnet
阅读(
2511)
评论()
编辑
收藏
举报
|
29 |
30 |
31 |
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述