【问题标题】:Difference between two date& time in datetime Fields in SQL [duplicate]SQL中日期时间字段中两个日期和时间之间的差异[重复]
【发布时间】:2012-10-17 10:28:12
【问题描述】:

可能重复:
How to compare two dates to find time difference in SQL Server 2005, date manipulation

我有两个日期时间字段,应该计算它们之间的时间,包括时间字段。

如果它们之间的差异小于 24 小时,则应将其视为 1 天,将 24 到 48 小时视为 2 天。

【问题讨论】:

    标签: datetime datediff


    【解决方案1】:

    如果您谈论的是 SQL Server,DATEDIFF 就是您所需要的。

    类似:

    SELECT DATEDIFF(d, StartDate, EndDate) FROM tableName
    

    ... 只需将 StartDate 和 EndDate 替换为您的列名,并将 tableName 替换为实际的表名。 此外,您可以将 'd' 字符换成其他日期部分,例如,如果您想查找月份、年份等的日期差异。

    * 更新 *

    @sateesh,尝试并遵循这个。我认为您可能遇到的问题与 SQL 的 DATEDIFF 函数中的舍入有关。解决这个问题的方法是降低到更细化的级别,例如几分钟而不是几天。请参阅下面的示例代码,并比较输出:

    DECLARE @tblDummy TABLE(Value1 SMALLDATETIME, Value2 SMALLDATETIME, [Description] NVARCHAR(50))
    INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 01:00', '13 hours 0 mins')
    INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 11:59', '23 hours 59 mins')
    INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-02 13:00', '25 hours 0 mins')
    INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:00', '48 hours 0 mins')
    INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-03 12:01', '48 hours 1 min')
    INSERT INTO @tblDummy (Value1, Value2, [Description]) VALUES ('2012-01-01 12:00', '2012-01-04 00:00', '60 hours 0 mins')
    
    -- Attempt 1: Standard date diff
    SELECT DATEDIFF(d, Value1, Value2) [diff], [Description]
    FROM @tblDummy
    
    -- Attempt 2: Date diff taking it down to the minutes level
    SELECT CEILING((DATEDIFF(minute, Value1, Value2) / 60.0) / 24.0) [diff], [Description]
    FROM @tblDummy
    

    这是输出:

    我相信尝试 2 可以满足您的需求。如果这对您没有帮助,那么恐怕我只是不明白您的问题。

    【讨论】:

    • 嗨,史蒂夫,我想要日期字段中日期小时和分钟之间的差异,并根据差异的输出将该差异转换为 1 天或 2 天
    • 抱歉,我很难准确理解您的需求。您能否更新您的问题以包含数据库表中的一些数据,以便我们先看看您是否在做任何不寻常的事情。
    • 嗨,史蒂夫,我需要的是,如果我有 24:39 的差异,那么它应该显示为 1 天和 25:10 为 2 天 49:10 为 3 天,如 wise.希望我很清楚现在
    • 数据库表中的值是否存储为日期时间类型?
    • 它们以 smalldatetime 的形式存储在数据库中
    【解决方案2】:

    听起来 DATEDIFF 函数会有所帮助。你可以选择你的 DatePart,这样可以得到非常精细的输出。

    http://msdn.microsoft.com/en-us/library/ms189794.aspx

    发件人:http://www.w3schools.com/sql/func_datediff.asp

    SELECT DATEDIFF(day,'2008-06-05 20:10:00','2008-08-05 20:10:00') AS DiffDate
    

    结果:

    DiffDate
    61
    

    【讨论】:

    • 嗨 NIce YellowEgg 我想要日期字段中日期小时和分钟之间的差异,并根据差异的输出将该差异转换为 1 天或 2 天
    • 您也可以在日期字段中使用时间,我会修改
    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 2017-09-14
    • 2021-10-21
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 2011-01-08
    相关资源
    最近更新 更多