将 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'));
我们有一个数据库,所有日期和时间都存储在一个名为时间戳的列中。 "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'));