1

我有一个 timecreated 字段,我需要用时间填充...但是我希望每个后续条目的时间自动递增一秒,这样所有时间都不相同...时间本身实际上并不重要,我只是不希望它们中的任何一个相同。

表:注释
列:时间创建

我基本上只想拥有:
Timecreated: 12:00:01
Timecreated: 12:00:02

等等......再次感谢大家!

[编辑]

完整的表结构:
TABLE: notes
COLUMNS: NO-ID (key), objectid, partnerid, note, datecreated, timecreated, datemodified

4

1 回答 1

2

好的,因为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)

不过要小心,从开始日期算起用完几天比用完几秒钟要容易得多......

于 2012-12-17T18:18:33.773 回答