Sql server mssqldatediff函数

Sql server mssqldatediff函数,sql-server,sql-server-2008,date,datediff,Sql Server,Sql Server 2008,Date,Datediff,我试着编写一个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.getMinutesWor

我试着编写一个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的新手。您能帮忙吗?

您正在使用日期类型的输入参数,其精度为一天。因此,你失去了时间部分

使用DATETIME,或者阅读本文,然后决定适合您的内容:

作品:

DECLARE @p1 DATETIME = '2004-10-18 07:53:31'
DECLARE @p2 DATETIME = '2004-10-18 10:13:35'
SELECT DATEDIFF(mi,@p1,@p2)
不起作用(好吧,它起作用了,但会在一整天内发生变化):


我认为您的问题与提供的数据类型有关

您正在使用不支持分钟的
date
。请使用
DATETIME2

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