【问题标题】:MS Sql Datediff FunctionMS Sql Datediff 函数
【发布时间】:2015-10-11 22:24:27
【问题描述】:

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

【问题讨论】:

    标签: sql-server sql-server-2008 date datediff


    【解决方案1】:

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

    使用 DATETIME,或阅读本文并确定适合您的方法: 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)
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-27
        • 1970-01-01
        • 2021-11-15
        • 2021-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-05
        相关资源
        最近更新 更多