sql >> データベース >  >> RDS >> Mysql

タイムスタンプ(自動)はいつ更新されますか?

    コマンドSHOW CREATE TABLE whateverを指定します

    次に、テーブルの定義 を確認します。 。

    おそらくこのような行があります

    logtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    

    初期化。 DEFAULT CURRENT_TIMESTAMP INSERTを意味します 明示的なタイムスタンプ設定がない場合は、現在の時刻が使用されます。同様に、ON UPDATE CURRENT_TIMESTAMP 明示的なタイムスタンプなしで更新すると、現在のタイムスタンプ値が更新されることを意味します。

    テーブルを作成するときに、このデフォルトの動作を制御できます。

    または、タイムスタンプ列が最初から正しく作成されていない場合は、変更できます。

    ALTER TABLE whatevertable
         CHANGE whatevercolumn 
                whatevercolumn TIMESTAMP NOT NULL
                               DEFAULT CURRENT_TIMESTAMP 
                               ON UPDATE CURRENT_TIMESTAMP;
    

    これにより、テーブルに対するINSERT操作とUPDATE操作の両方が自動的にタイムスタンプ列を更新します。 whatevertableを更新する場合 タイムスタンプを変更せずに、つまり

    次に、この種の更新を発行する必要があります。

    UPDATE whatevertable
       SET something = 'newvalue',
           whatevercolumn = whatevercolumn
     WHERE someindex = 'indexvalue'
    

    これはTIMESTAMPで機能します およびDATETIME 列。 (MySQLバージョン5.6.5より前は、TIMESTAMPでのみ機能していました。 s)TIMESTAMPを使用する場合 s、タイムゾーンが考慮されます。正しく構成されたサーバーマシンでは、これらの値は常にUTCで保存され、取得時に現地時間に変換されます。



    1. SQLエラー私はこれを理解することはできません

    2. OracleでのDATEのフォーマット

    3. MySQLの緯度と経度のテーブルの設定

    4. SQLiteQueryBuilderのselectionArgsは、列の整数値では機能しません