MS Sql Datediff 函数:

4

我尝试编写了一段MS SQL代码,用于计算工人的工作时间(单位为分钟),它需要两个日期作为输入。但是结果总是返回0。我做错了什么?

Create FUNCTION getMinutesWork
(
     @inp1 date,
     @inp2 date
)
RETURNS int
As
Begin
     DECLARE @outp int = DATEDIFF(mi,@inp1,@inp2)
RETURN(@outp)
End

我尝试使用以下命令运行它:

SELECT dbo.getMinutesWork('2004-10-18 07:53:31','2004-10-18 10:13:35') AS WorkTime

返回的是0。我在SQL方面很新手,请帮忙吗?

2个回答

4
您正在使用日期类型的输入参数,其精度为一天。因此您会丢失时间部分。
请改用日期时间类型,或阅读本文并决定哪种类型适合您: http://blogs.msdn.com/b/cdnsoldevs/archive/2011/06/22/why-you-should-never-use-datetime-again.aspx 有效:
DECLARE @p1 DATETIME = '2004-10-18 07:53:31'
DECLARE @p2 DATETIME = '2004-10-18 10:13:35'
SELECT DATEDIFF(mi,@p1,@p2)

有问题(可以工作,但是会误差一整天):

DECLARE @p1 DATE = '2004-10-18 07:53:31'
DECLARE @p2 DATE = '2004-10-18 10:13:35'
SELECT DATEDIFF(mi,@p1,@p2)

1
我认为你的问题与所提供的数据类型有关。
你正在使用不支持分钟的date。请使用DATETIME2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接