Navicat は時間のデフォルト値 (現在の最新時間) を設定します。

序文

記事は短いですが、内容は濃いです!

1. 原理分析

必須作業:データを記入する際、時刻が書かれていない場合、デフォルトで最新の時刻がデータに補完されます

最初は、Navicat の datetime のデフォルト値が now() に設定されていましたが、エラーが表示され続けました。
Mysql には現在時刻を表現するさまざまな方法があることがわかっています。

  • 今()
  • 現地時間
  • 現地時間()
  • ローカルタイムスタンプ
  • LOCALTIMESTAMP()
  • CURRENT_TIMESTAMP
  • CURRENT_TIMESTAMP()

最終的にこれだけが合格しました: CURRENT_TIMESTAMP

その他に設定すると、次のエラーが発生します。
ここに画像の説明を挿入


正しい設定方法は次のとおりです。
ここに画像の説明を挿入

2. 日時とタイムスタンプの違い

実際の戦闘では日時やタイムスタンプがよく使われますが、これらには時刻や日付などの属性もあり、具体的な違いは以下の通りです。

カテゴリー フォーマット 範囲 保管所
YYYY 1901 年から 2155 年まで 1バイト
時間 時:MM:SS -838:59:59から838:59:59まで 3バイト
日にち YYYY-MM-DD 1000-01-01 ~ 9999-12-31 3バイト
日付時刻 YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8バイト
タイムスタンプ YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 (UTC 時間換算) 4バイト

日時とタイムスタンプの形式が同じであり、値の範囲も今のところ変わらないことがわかります。

navicatを操作する場合、datetimeとtimestampのデフォルト値はnullで、保存時はすべてnull値ですが、
現在時刻を保存できるのはtimestampのみで、その属性をCURRENT_TIMESTAMPに設定します

3.補足

  1. Navicat には、時刻を設定するための date、datetime、およびその他の属性もありますが、どれも最新の時刻表現を持っていません。
  2. mysql のフィールドは次のように表現される必要があります。

mysql のバージョンが比較的低い場合: (より高いバージョンの CURRENT_TIMESTAMP は失敗する可能性があります。now() を試してください)

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',

mysql のバージョンは比較的高いです。

  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',

おすすめ

転載: blog.csdn.net/weixin_47872288/article/details/131946275