序文
記事は短いですが、内容は濃いです!!!!
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.補足
- Navicat には、時刻を設定するための date、datetime、およびその他の属性もありますが、どれも最新の時刻表現を持っていません。
- 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 '修改时间',