use*_*131 2 sql sql-server datediff
你可以帮我吗,我使用下面的sql视图(然后我在水晶报告中使用).我需要有日期差异(以分钟为单位),但现在我需要排除周末.请帮忙 :)
SELECT intwc AS wc,
Datediff(n, start_date, end_date) AS time,
mh_start_date AS date,
'Repair' AS type
FROM dbo.xxxxxxx
Run Code Online (Sandbox Code Playgroud)
这是@ bendataclear答案的修改版本.它直接计算周末分钟,而不是计算天数并乘以24*60.它还占星期六/星期日开始/结束的所有4种组合
我正在使用时间CONVERT(date,@StartDate)的日期,然后用于计算部分星期日和星期六.有更好的方法,但我最简单.@StartDate00:00:00
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2013/03/15 23:30:00'
SET @EndDate = '2013/03/17 00:30:00'
SELECT
( DATEDIFF(MINUTE, @StartDate, @EndDate)
- ( DATEDIFF(wk, @StartDate,@EndDate)*(2*24*60)
-- End on Sunday
-(CASE WHEN DATEPART(dw, @EndDate) = 1 THEN 24.0*60-DATEDIFF(minute,CONVERT(date,@EndDate),@EndDate) ELSE 0 END)
-- Start on Saturday
-(CASE WHEN DATEPART(dw, @StartDate) = 7 THEN DATEDIFF(minute,CONVERT(date,@StartDate),@StartDate) ELSE 0 END)
-- End on Saturday
+(CASE WHEN DATEPART(dw, @EndDate) = 7 THEN DATEDIFF(minute,CONVERT(date,@EndDate),@EndDate) ELSE 0 END)
-- Start on Saturday
+(CASE WHEN DATEPART(dw, @StartDate) = 1 THEN 24.0*60-DATEDIFF(minute,CONVERT(date,@StartDate),@StartDate) ELSE 0 END)
)
)
Run Code Online (Sandbox Code Playgroud)