【问题标题】:How do I get the difference between two datetimes in MYSQL?如何在 MYSQL 中获取两个日期时间之间的差异?
【发布时间】:2011-03-16 15:54:41
【问题描述】:

我正在尝试这个

SELECT DATEDIFF(second,log.start_time,log.end_time) 
as seconds 
from log 
where log.log_id = "some crazy UUID";

但我收到一个错误,因为DATEDIFF() 不接受像第二个那样的格式化程序表达式。

所以我尝试了,

SELECT second(DATEDIFF(second,log.start_time,log.end_time)) 
as seconds 
from log
where log.log_id = "some crazy UUID";

但这也不适用于格式化。

【问题讨论】:

标签: mysql datetime time datediff


【解决方案1】:

我认为您的意思是使用TIMESTAMPDIFF() 而不是DATEDIFF()

SELECT TIMESTAMPDIFF(second,log.start_time,log.end_time) as seconds 
from log 
where log.log_id = "some crazy UUID";

【讨论】:

    【解决方案2】:

    试试这个

    SELECT TIME_TO_SEC( TIMEDIFF( log.start_time, log.end_time )) AS seconds
    FROM log 
    WHERE log.log_id = "some crazy UUID";
    

    【讨论】:

      【解决方案3】:

      DATEDIFF 只接受两个参数,而您在此处传递三个参数。

      它是如何工作的,而且它只返回不包括时间的黑白日期差异。

      http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

      【讨论】:

        【解决方案4】:

        DATEDIFF() 返回相差天数。

        使用TIMEDIFF() 或使用TO_SECONDS() 转换两个时间戳并获得它们的区别:

        SELECT TO_SECONDS(log.end_time) - TO_SECONDS(log.start_time) AS seconds
          FROM log 
          WHERE log.log_id = "some crazy UUID"
        ;
        

        【讨论】:

          【解决方案5】:

          DATEDIFF

          msdn,它返回指定开始日期和结束日期之间跨越的指定日期部分边界的计数(有符号整数)。 DATEDIFF() 函数返回两个日期之间的时间。 语法:

          DATEDIFF ( datepart , startdate , enddate )  
          

          您应该使用TIMEDIFF()TIMESTAMPDIFF() 函数。
          只需将 TIMESTAMPDIFF() 函数替换为 DATEFDIFF()

          【讨论】:

            猜你喜欢
            • 2020-03-22
            • 2017-03-27
            • 2011-06-13
            • 2019-05-11
            • 2011-01-30
            • 2012-06-10
            • 1970-01-01
            相关资源
            最近更新 更多