【问题标题】:How to convert DATETIME to TIMESTAMP in mysql?如何在 mysql 中将 DATETIME 转换为 TIMESTAMP?
【发布时间】:2016-10-19 06:57:52
【问题描述】:

我的表中有 DATETIME 列,具有 2015-04-23 11:17:49 属性 尝试将其转换为 unix 时间戳,根据 mysql 文档,我只需将该字段放入 UNIX_TIMESTAMP() 函数中,我会得到 -> 1223423442 - 时间戳,但它不起作用,我只有 0000-00- 00 00:00:00 尝试了很多东西:

// doesn't work
UNIX_TIMESTAMP(CAST(`updated` AS CHAR(100))) AS updated_at,
// doesn't work
UNIX_TIMESTAMP(`updated`) AS updated_at,
//doesn't work
UNIX_TIMESTAMP(STR_TO_DATE(CAST(`created` AS CHAR(100)), \'%M %e %Y %h:%i%p\'))
                                AS created_at'
// doesn't work
UNIX_TIMESTAMP(STR_TO_DATE(`created`, '%M %e %Y %h:%i%p'))
                                AS created_at

没有 `` 也不行,我是不是遗漏了什么?

【问题讨论】:

  • 你为什么使用CAST?使用UNIX_TIMESTAMP(your_field)
  • 用过的,看看第二行“不起作用”,同样的故事 0000-00-00 00:00:00
  • 请提供一个最低限度的非工作示例。这个有效:sqlfiddle.com/#!9/9eecb7d/64679

标签: mysql datetime unix-timestamp


【解决方案1】:

试试:

select 
  o1.id, 
  o1.operation_date_time, 
  (unix_timestamp(o2.operation_date_time) - unix_timestamp(o1.operation_date_time)) 
    as duration 
from operations as o1 
  inner join operations as o2
where o1.operation = "START" 
  and o2.operation = "STOP"
  and o1.id = (o2.id - 1);

它应该作为输出:

+------+---------------------+----------+
| id   | operation_date_time | duration |
+------+---------------------+----------+
|    1 | 2000-01-01 06:30:45 |     4455 |
|    3 | 2000-01-01 08:18:12 |    11146 |
|    5 | 2000-01-01 15:45:01 |    11792 |
+------+---------------------+----------+
3 rows in set (0.00 sec)

【讨论】:

    【解决方案2】:

    我不明白您为什么需要将 DATETIME 转换为 TIMESTAMP。

    您可以使用 INT(11) 字段存储使用函数 UNIX_TIMESTAMP(your_datetime_field) 从 DATETIME 转换的 UNIX TIMESTAMP。

    注意,根据文档:http://dev.mysql.com/doc/refman/5.5/en/datetime.html

    DATETIME 类型用于同时包含日期和时间部分的值。 MySQL 以 'YYYY-MM-DD HH:MM:SS' 格式检索和显示 DATETIME 值。支持的范围是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。

    TIMESTAMP 数据类型用于同时包含日期和时间部分的值。 TIMESTAMP 的范围为 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。

    【讨论】:

    • 也许您需要时间戳而不是日期时间?我可以想到很多你想要进行转换的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2022-01-02
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多