这是我的代码,结果为1,但必须为0,因为持续时间不是一分钟
DECLARE @Start AS DATETIME = '2013-10-08 09:12:59.000'
DECLARE @End AS DATETIME = '2013-10-08 09:13:09.000'
SELECT DATEDIFF(MI,@Start, @End)
如何解决此问题? 我正在使用SQL Server 2008 R2。
更新
它可以在几秒钟内正常工作.....而不是分钟。
DECLARE @Start AS DATETIME = '2013-10-08 09:12:59.000'
DECLARE @End AS DATETIME = '2013-10-08 09:13:09.000'
SELECT DATEDIFF(SS,@Start, @End)
答案 0 :(得分:3)
DATEDIFF非常简单,如果您比较分钟,则不需要花费几秒钟。
更改您的查询以获得以秒为单位的差异并将其除以60,向下舍入。
答案 1 :(得分:2)
9:12到9:13 = 1分钟
如果你想要更好的分辨率,请使用秒数(SS
)为你的日期部分然后除以60
答案 2 :(得分:2)
试试这个
DECLARE @Start AS DATETIME = '2013-10-08 09:12:59.000'
DECLARE @End AS DATETIME = '2013-10-08 09:13:09.000'
SELECT DATEDIFF(SS,@Start, @End)/60
答案 3 :(得分:2)
正如@MartinSmith所提到的,当前的解决方案不是处理毫秒,这是一个更精确的方法
declare @t table(date1 datetime, date2 datetime)
insert @t values('2013-10-08 09:12:00', '2013-10-08 09:13:59')
insert @t values('2013-10-08 09:12:30', '2013-10-08 09:13:29')
insert @t values('2013-10-08 09:12:30:111', '2013-10-08 09:13')
insert @t values('2013-10-08 09:12:30:111', '2013-10-08 09:13')
insert @t values('2013-10-08 09:12:30', '2013-10-08 09:12')
select case when date2 > date1
then datediff(minute, 0, date2-date1)
else -datediff(minute, 0, date1 - date2)
end
from @t
答案 4 :(得分:0)
更准确地说,您可以使用:
DECLARE @Start AS DATETIME = '2013-10-08 09:12:59.997'
DECLARE @End AS DATETIME = '2013-10-08 09:13:59.000'
SELECT DATEDIFF(MS,@Start, @End)/60000.00
但你应该知道,'2013-10-08 09:12:59.001'和'2013-10-08 09:13:59.000'之间的差异在这种情况下也是1.