将 date/time 字符串转换为 MySQL 中的 unix 时间戳

Converting date/time string to unix timestamp in MySQL

我们有一个数据库,所有日期和时间都存储在一个名为时间戳的列中。 "timestamp" 列中 date/time 的格式为:03 Aug 08:10am.

我想将此 (03 Aug 08:10am) 转换为 MySQL 中的 UNIX TIMESTAMP,而不是 PHP,因为我们已经有超过 500 行采用这种格式:8 月 3 日 08:10am.

我尝试创建一个名为 new_timestamp 的新 INT 列和 运行 这个查询:

UPDATE table_name SET new_timestamp = UNIX_TIMESTAMP(timestamp);

但是,它显示 0 行受到影响。

这不是重复的,不要将我重定向到如何在 PHP 中转换。先看问题:)

UNIX_TIMESTAMP() 函数需要有效的 date/time 格式才能正确转换,因此您需要将现有的 date/time 格式转换为 valid/recognised 格式(包括年份) 第一的。您可以使用 MySQL 的 STR_TO_DATE() 函数来执行此操作,告诉它您要传递的格式,并连接到一个硬编码的年份值,因为在您的情况下它始终是 2016 年。

STR_TO_DATE(CONCAT('2016-', <your date/time value>), '%Y-%d %b %h:%i%p')

然后您可以使用 UNIX_TIMESTAMP() 函数将该有效日期转换为您的 unix 时间戳,并在一个步骤中更新所有这些记录:

UPDATE table_name
   SET new_timestamp = 
       UNIX_TIMESTAMP(STR_TO_DATE(CONCAT('2016-', timestamp), '%Y-%d %b %h:%i%p'));