我们有要求每天向我们的客户开票的要求。我们在我们的系统当天的账单中存在资产存在。于是,我开始用DATEDIFF ...T-SQL计算两天之间的天数(datediff不太适用)
select datediff(dd ,'2015-04-24 12:59:32.050' ,'2015-05-01 00:59:59.000');
返回此:
7
但我需要算日期如下:4/24,4/25,4/26,4/27 ,4/28,4/29,4/30,5/1,这8天。所以datediff不是很有效。我想这些变化下面
--too simple, returns 7, i need it to return 8
select datediff(dd ,'2015-04-24 12:59:32.050', '2015-05-01 23:59:59.000');
--looking better, this returns the 8 i need
select ceiling(datediff(hh,'2015-04-24 12:59:32.050', '2015-05-01 23:59:59.000')/24.0);
-- returns 7, even though the answer still needs to be 8. (changed enddate)
select ceiling(datediff(hh,'2015-04-24 12:59:32.050', '2015-05-01 00:59:59.000')/24.0);
所以,我的问题...如何在SQL,我会得到的日期算像我所描述的,因为我相信DATEDIFF计数跨越时间界限的数量....我当前最好的方法是循环遍历游标和计数。伊克。
select datediff(dd,'2015-04-24 00:00:00.000','2015-05-01 23:59:59.999'); – Lali
您使用datediff计算边界的数量是正确的。如果你想包含开始日期,你不能只加1结果? 'select datediff(dd,'2015-04-24 12:59:32.050','2015-05-01 23:59:59.000')+ 1;'? – jpw