1
如果我运行下面的查询:MySQL的CURRENT_TIMESTAMP给我所有0
ALTER TABLE `price_s` ADD COLUMN `ts` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `price_s_id` ;
新列将与0000-00-00 00:00:00
填充。 在修改该列之前,此列中的值不会更新为当前时间戳,即ON UPDATE CURRENT_TIMESTAMP
似乎正常工作。
如果我运行:
SELECT version() , @@time_zone , @@system_time_zone , NOW() , UTC_TIMESTAMP()
我:
'5.5.15', '+10:00', 'EST', '2012-08-23 14:56:59', '2012-08-23 04:56:59'
我想UTC时间存储在列ts
,我该怎么做呢?
不知道这是否是相关的,我试图生成mysql.time_zone*
表:
Miranda-Macbook: ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
Enter password: Warning: Unable to load '/usr/share/zoneinfo/+VERSION' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh87' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh88' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Asia/Riyadh89' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh87' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh88' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/Mideast/Riyadh89' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
感谢@Sameer和@Marc B. 现在我明白时间戳以上(本article的帮助下) 它已经存储在UTC,所以我需要的其实是:
SET time_zone = 'SYSTEM';
UPDATE tablename SET ts=now()
我希望您不要指望当您添加该列时表中的现有行将获取当前时间戳。现有的行将获得值0.插入的任何新行都将具有当前的时间戳。对于现有的行,您需要运行一次性更新命令。 – Sameer