1

時間を入力する必要がある timecreated フィールドがあります...しかし、後続のエントリごとに時間を1秒ずつ自動インクリメントして、同じ時間がないようにしたいと思います...時間自体実際には問題ではありません。私はそれらのどれもが同じであってほしくありません。

TABLE: notes
COLUMN: 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`);

行を削除した場合、それらは連続した秒にはなりませんが、それでも一意です。

基本タイムスタンプから開始する必要さえありません1970 年 1 月 1 日プラスまたはマイナスのサーバーのタイムゾーンである 0 から始めることができます。

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フィールドを 1 日増やすには、同じパターンを使用しますが、以下を使用しDATE_ADD()ます。

UPDATE `notes` SET `datecreated` = DATE_ADD('2012-01-01', INTERVAL `NO-ID` DAY)

ただし、注意してください。開始日から数秒を使い果たすよりも、開始日から数日を使い果たす方がはるかに簡単です...

于 2012-12-17T18:18:33.773 に答える