【问题标题】:MySQL How to get timedifference in unix timestampMySQL如何获取unix时间戳的时差
【发布时间】:2017-10-02 13:00:41
【问题描述】:

我有一个保存值 1506947452 的变量,需要使用公式从该日期提取分钟数:started_data - now_date 但started_date 采用 unix 时间戳格式 10 位 int 数字...我以 ajax 形式收到并需要输入mysql 查询我试试这个:

SELECT TIMESTAMPDIFF(MINUTE, 1506947452, UNIX_TIMESTAMP());

但我从终端得到这个:

+-------------------------------------------------------+
| TIMESTAMPDIFF(MINUTE, '1506947452', UNIX_TIMESTAMP()) |
+-------------------------------------------------------+
|                                                  NULL |
+-------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)

那么我如何比较 unix_timestamp 格式的两个日期并获取分钟数? 我需要为 start_date 使用 unix_timestamp,所以其他日期格式不是解决方案。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    UNIX_TIMESTAMP 是自 UTC 时间“1970-01-01 00:00:00”以来的秒秒数。如果您有一个变量持有另一个 UNIX_TIMESTAMP,您可以获得差异并将秒转换为分钟(如果需要,还可以舍入/截断结果):

     SELECT ROUND((UNIX_TIMESTAMP()-1506947452) / 60, 0)
    

    【讨论】:

      【解决方案2】:

      我修复它使用:

      SELECT TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME('1506950440'), NOW());
      

      想法是将 unixtime 转换为正常日期,然后将其与 now() datetimestamp 进行比较......所以我明白了:

      mysql> SELECT TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME('1506950440'), NOW());
      +-----------------------------------------------------------+
      | TIMESTAMPDIFF(MINUTE, FROM_UNIXTIME('1506950440'), NOW()) |
      +-----------------------------------------------------------+
      |                                                         2 |
      +-----------------------------------------------------------+
      1 row in set (0.01 sec)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-11
        • 1970-01-01
        • 2012-08-05
        • 1970-01-01
        • 2012-06-03
        • 1970-01-01
        • 2014-05-04
        • 2012-03-04
        相关资源
        最近更新 更多