代码之家  ›  专栏  ›  技术社区  ›  Ryan Gadsdon

从TIMESTAMPDIFF(time,Current_time())中提取hh:mm:ss

  •  1
  • Ryan Gadsdon  · 技术社区  · 6 年前
    CREATE TABLE Test (
    
    id int primary key,
    Present varchar(10),
    Date date,
    Time time
    );
    
    INSERT INTO Test (id, Present, Date, Time)
    Values (1, 'Present', '2018-07-18', '10:13:55' ),
    (2, 'Present', '2018-07-18', '10:10:55' );
    

    查询:

    SELECT 
    id,
    Present,
    Date,
    Time,
    TIMESTAMPDIFF(MINUTE, time, CURRENT_TIMESTAMP())
    FROM Test
    

    结果:

    | id | Present |       Date |     Time | TimeDifference |
    |----|---------|------------|----------|----------------|
    |  1 | Present | 2018-07-18 | 10:13:55 |           -127 |
    |  2 | Present | 2018-07-18 | 10:10:55 |           -124 |
    

    我希望将时间差异显示为hh:mm:ss而不仅仅是分钟。我试过:

    SEC_TO_TIME(TIMESTAMPDIFF(SECOND, time, CURRENT_TIMESTAMP())) AS TimeDifference 
    

    但这给了我一个错误:“第5列中的时间格式不正确”-02:03:10”

    如何从TIMESTAMPDIFF函数中提取此信息我在网上到处找,但什么也找不到。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Roy G    6 年前

    在时间和当前时间戳之间切换,您将得到 正数

    将单位时间更改为秒,然后将差异秒转换为时间。

    函数的作用是:将数值秒转换为时间值(格式为hh:mm:ss)。

    SELECT 
    id,
    Present,
    Date,
    Time,
    SEC_TO_TIME(TIMESTAMPDIFF(SECOND,CURRENT_TIMESTAMP(),time))
    FROM Test