mySQL更新“timecreated”列,但为每个后续条目添加一秒

时间:2012-12-17 17:43:03

标签: mysql

我有一个时间创建的字段,我需要填充时间...但我想为每个后续条目自动增加一秒钟的时间,以便没有任何时间是相同的...时间本身并不重要,我只是不希望它们中的任何一个是相同的。

表:备注
专栏:时间创造

我基本上只想拥有:
创建时间:12:00:01 创建时间:12:00:02

等等......再次感谢你们!

[编辑]

全桌结构:
表:备注
栏目:NO-ID(关键),objectid,partnerid,note,datecreated,timecreated,datemodified

1 个答案:

答案 0 :(得分: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)

但请谨慎使用,从开始日期开始的几天比用完几秒钟要容易多了......