好的,因为NO-ID
(列的奇怪名称,但这不是重点)是AUTO_INCREMENT
,您可以简单地将其值(根据定义是唯一的)添加到基本 UNIX 时间戳。您将希望在过去足够远的地方开始,以免值用完,尽管只有当您拥有数百万行时,这才是一个问题。
所以从2012-01-01 00:00:00
例如开始:
SELECT UNIX_TIMESTAMP('2012-01-01 00:00:00');
+---------------------------------------+
| UNIX_TIMESTAMP('2012-01-01 00:00:00') |
+---------------------------------------+
| 1325397600 |
+---------------------------------------+
更新将主键值添加到该基本时间戳的所有行:
UPDATE `notes` SET `timecreated` = FROM_UNIXTIME(1325397600 + `NO-ID`);
如果您删除了行,它们不会是连续的秒数,但它们仍然是唯一的。
您甚至不必从基本时间戳开始。您可以从 0 开始,即 1970 年 1 月 1 日加上或减去服务器的时区。
UPDATE `notes` SET `timecreated` = FROM_UNIXTIME(`NO-ID`);
结果时间戳如
1970-01-01 00:00:01
1970-01-01 00:00:02
1970-01-01 00:00:03
1970-01-01 00:00:04
...
评论后更新:
要将datecreated
字段增加一天,请使用相同的模式,但使用DATE_ADD()
:
UPDATE `notes` SET `datecreated` = DATE_ADD('2012-01-01', INTERVAL `NO-ID` DAY)
不过要小心,从开始日期算起用完几天比用完几秒钟要容易得多......