【问题标题】:How to get time difference (in hours) between 2 dates如何获取两个日期之间的时差(以小时为单位)
【发布时间】:2012-06-11 04:59:37
【问题描述】:

我正在尝试获取 2 个用户之间的时间差,我需要小时差。

我尝试使用 DATEDIFF 函数但它是错误的。

这是我的代码:

SELECT DATEDIFF(*,  
(SELECT max(u1.time_c)
FROM users u)
,
(SELECT max(u2.time_c)
FROM users u2) 

【问题讨论】:

  • 两个用户之间的时间差”是什么意思?你指的是他们的时区吗?或者是其他东西?您说您现有的代码是“错误”,但不要说它有什么问题。我们应该猜测吗? (我的猜测是 DATEDIFF() 函数返回 days 的差异,而不是 hours;并且只接受两个参数,而不是三个参数——但是 all 有错吗?)。
  • 如果 u.1 是 2 天前创建的,而 u.2 是昨天创建的,那么差异是 24 小时,例如
  • 不清楚。添加更多信息。

标签: mysql sql oracle


【解决方案1】:

来自MySQL DATEDIFF docs

Only the date parts of the values are used in the calculation.

你会想看看TIMEDIFF

这将为您提供时间差的小时数(假设您的 time_c 字段是 DATETIME 或类似的)

SELECT HOUR(TIMEDIFF(  
  (SELECT max(u1.time_c) FROM users u),
  (SELECT max(u2.time_c) FROM users u2)
)) 

【讨论】:

    【解决方案2】:

    您的选择语句中必须有一个from 子句。 像

    Select date1 - date2 from dual
    

    返回 date1 和 date2 之间的天数。

    如果你想要小时数:

    Select (date1 - date2)*24 from dual;
    

    (这仅适用于 oracle)

    【讨论】:

    • 我不明白你的问题,但是如果你问结果的类型,结果是一个浮点数,代表第一次查询的天数,小时数在第二。例如,0.5 天表示 12 小时。另一个例子:0.2 小时 = 0.2*60 分钟 = 12 分钟
    • 如果日期差为零,那么会发生什么?如何获得小时数?
    • 在这种情况下没有任何反应。零小时。
    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 2013-05-14
    • 2017-06-24
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多