6

現在のタイムスタンプを秒単位で格納するためのINT(11)列があります。クエリは次のようになります。

INSERT INTO `abc` (id, timestamp) VALUES ('', UNIX_TIMESTAMP ( NOW () ) )

理由はわかりませんが、日付は変更されていません。クエリを送信するタイミングは関係ありません。列の値は変更されません。1342692014の値がありますが、理由はわかりません。

タイムスタンプのオプションやその他の機能はありますか?日付は秒単位で保存する必要があります。

4

1 に答える 1

12

クエリでtimestamp を参照することはありません。あなたは文字列しか持っていません:

INSERT INTO `abc` (id, 'timestamp') VALUES ('', UNIX_TIMESTAMP ( NOW () ) )
                       ^^^^^^^^^^^

編集:

私はあなたの更新されたコードでこれを取得します:

エラー1630(42000):FUNCTIONtest.NOWは存在しません。リファレンスマニュアルの「関数名の解析と解決」セクションを確認してください

それがまだ実際のコードではないと仮定して、構文エラーを修正した後、私はあなたの結果を再現することができません。私の知識に基づく推測では、これidは自動インクリメントされた整数の主キーです。現在のSQLモードでは、MySQLが新しい行を取得''NULLて挿入しています...しかし、この仮説は実際にはテストしていません。

私の作業コードはこれです:

CREATE TABLE `abc` (
    `pk` INT(10) NOT NULL AUTO_INCREMENT,
    `id` VARCHAR(10) NULL DEFAULT NULL,
    `timestamp` INT(11) NOT NULL DEFAULT '0',
    PRIMARY KEY (`pk`)
)
ENGINE=InnoDB;

INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP());
-- Wait a few seconds
INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP());
-- Wait a few seconds
INSERT INTO abc (id, timestamp) VALUES ('', UNIX_TIMESTAMP());

SELECT timestamp FROM abc WHERE id='';

...そしてこれを返します:

+------------+
| timestamp  |
+------------+
| 1342694445 |
| 1342694448 |
| 1342694450 |
+------------+
3 rows in set (0.00 sec)
于 2012-07-19T10:06:20.720 に答える