我有这似乎很好地工作,但它总是比数,我需要1少的情况如下:DATEDIFF始终是1号少于我需要
DECLARE @start_day DATETIME;
DECLARE @end_day DATETIME;
DECLARE @start_time DATETIME;
DECLARE @end_time DATETIME;
SET @start_day = '2013-06-03';
SET @end_day = '2013-06-07';
PRINT DATEDIFF(d, @start_day, @end_day)
- DATEDIFF(wk, @start_day, @end_day) * 2
- CASE
WHEN DATEPART(dw, @start_day) != 7 AND DATEPART(dw, @end_day) = 7 THEN 1
WHEN DATEPART(dw, @start_day) = 7 AND DATEPART(dw, @end_day) != 7 THEN -1
ELSE 0
END
我应该得到
`5` for `2013-06-03` to `2013-06-07` but it's giving me `4`.
`5` for `2013-06-03` to `2013-06-08` but it's giving me `4`.
`5` for `2013-06-03` to `2013-06-09` but it's giving me `4`.
`6` for `2013-06-03` to `2013-06-10` but it's giving me `5`.
所以我的问题是:
如何获得:
`2013-06-03` to `2013-06-07` to equal 5
`2013-06-03` to `2013-06-08` to equal 5
`2013-06-03` to `2013-06-09` to equal 5
`2013-06-03` to `2013-06-10` to equal 6
请注意,在末尾添加+1并不能解决问题!
这是行不通的。如果我这样做,它也会在周末加1,这是不应该做的。 – oshirowanen
'DATEDIFF'就是这样工作的。 “2013-6-18”和“2013-6-18”之间的区别肯定应该是“0”。所以'2013-6-18'和'2013-6-19'之间的区别将会是'1' ...等etc –
我的第二个评论不是针对您的第一条评论... –