如何在Mysql中将人类日期转换为Unix时间戳?

20

我有一个带有日期字段的表,其中包含人类日期,例如:“2008-01-08 19:23:32”。 现在我需要将这个字段以及同一表中的其他字段复制到另一个表中,但日期需要以UNIX时间戳的形式呈现。

在MySQL中是否有将人类日期转换为UNIX时间戳的函数可以在查询本身中完成?


2
请注意,如果您表中存储的日期不是UTC时间,则可能需要先将其转换为UTC时区,然后再调用unix_timestamp()函数。我不确定unix_timestamp()函数在计算时间戳之前是否会自动将日期时间转换为UTC时间。 - Aziz Shaikh
仅作说明.. 这是一个 datetime 字段类型,而不是 date 字段类型。它们之间有区别。 - DevlshOne
5个回答

49
mysql> select unix_timestamp('2008-01-08 19:23:32');
+---------------------------------------+
| unix_timestamp('2008-01-08 19:23:32') |
+---------------------------------------+
|                            1199849012 |
+---------------------------------------+
1 row in set (0.04 sec)

可以在这里找到: http://www.epochconverter.com/


4
UNIX_TIMESTAMP()可以解决这个问题!
来自MySQL文档:
如果没有参数调用,则返回Unix时间戳(自1970年01月01日00: 00: 00 UTC以来的秒数)作为无符号整数。 如果以日期参数调用UNIX_TIMESTAMP(),则它将返回参数值为自1970年01月01日00: 00: 00 UTC以来的秒数。 日期可以是DATE字符串,DATETIME字符串,TIMESTAMP或YYMMDD或YYYYMMDD格式的数字。 服务器会将日期解释为当前时区中的值,并将其转换为UTC中的内部值。
mysql> SELECT UNIX_TIMESTAMP();
        -> 1196440210
mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
        -> 1196440219

4
SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');

0

查询:

SELECT UNIX_TIMESTAMP(TIMESTAMP(`opened`)) as timestamp_date, `opened` as datetime_type FROM `myterminal`

输出:

| timestamp_date        | datetime_type     
|-------------------    |---------------------
| 1536602012            | 2018-09-10 14:53:32
| 1536603854            | 2018-09-10 15:24:14

0

是的。 SELECT UNIX_TIMESTAMP(column) FROM TABLE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接