代码之家  ›  专栏  ›  技术社区  ›  user1724365

MySQL时间戳的平均值,现在以秒为单位

  •  0
  • user1724365  · 技术社区  · 4 年前
    SELECT AVG(UNIX_TIMESTAMP(NOW()) - TIME_TO_SEC(TOTAL_TIME_START)) AS OrderAverage
    FROM Orders
    WHERE `TOTAL_TIME_STOP` = '0000-00-00 00:00:00'
    

    我使用上面的查询试图给出订单在数据库中等待的平均时间。totaltime\u START将是一个MySQL时间戳字段(过去的时间)。但我得到的值是秒,相当于18671天,3小时,30分钟,这是完全错误的。我哪里做错了??

    0 回复  |  直到 4 年前
        1
  •  2
  •   Gordon Linoff    4 年前

    TIME_TO_SEC() UNIX_TIMESTAMP() 在做两件不同的事。一个是计算时间的秒数 时间 您的 datetime . 另一个是计算 '1970-01-01' .

    TO_SECONDS() :

    SELECT AVG(TO_SECONDS(NOW()) - TO_SECONDS(TOTAL_TIME_START)) AS OrderAverage
    FROM Orders
    WHERE `TOTAL_TIME_STOP` = '0000-00-00 00:00:00'
    
        2
  •  1
  •   blackbishop    4 年前

    当您得到epoch中的当前时间时,您需要转换 TOTAL_TIME_START

    SELECT AVG(UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(TOTAL_TIME_START)) AS OrderAverage
    FROM Orders
    WHERE `TOTAL_TIME_STOP` = '0000-00-00 00:00:00'