mysql中如何设置默认时间为当前时间?

上周有客户问我MySQL表的字段类型,特别是TIMESTAMP和DATETIME的区别。
让我告诉你。

你写的建表语句其实没问题: sql CREATETABLEtest(aaaavarchar(5 0)NOTNULL, createdaytimestampNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP)ENGINE=InnoDBDEFAULTCHARSET=utf8 ;
重点关注 createday 行。
时间戳类型+ONUPDACURRENT_TIMESTAMP可以让字段在数据更新时自动记录时间戳,非常方便。

但请注意:TIMESTAMP 和 DATETIME 完全不同。
TIMESTAMP是UTC格式的变长内存,最大为2 03 7 ; DATETIME 具有固定长度,存储 UTC,但显示是基于时区的。
如果这里使用TIMESTAMP,更新记录会自动改变,当数据频繁改变时,这会有点烦人。

2 02 3 年,在深圳帮助一家公司搭建系统时,遇到了陷阱。
他们使用 TIMESTAMP 来设置订单表的创建时间。
这导致系统时间调整。
他们在半夜做了批量更新,把大量订单的创建日改成了凌晨……最后又改回了DATETIME,并增加了手动验证。

Navicat 设置也很简单。
当您创建或修改字段时: 1 . 选择 TIMESTAMP 作为类型 2 . 输入 CURRENT_TIMESTAMP 作为默认值 3 、检查是否需要启用ON UPDATE CURRENT_TIMESTAMP选项
添加MySQL时间类型:
DATE:存储日期,1 000-9 9 9 9
时间:轻松节省时间,00:00-2 3 :5 9
DATETIME:日期和时间范围截至 9 9 9 9 年 1 2 月 3 1 日
TIMESTAMP:有了自动更新功能,到2 03 7 年就结束了。

TIMESTAMP最神奇的地方就是它可以自动记录修改时间。
但是,如果需要存储特别遥远的时间(例如历史数据),请不要使用TIMESTAMP。

无论如何,这取决于你。
如果要自动记录更新时间,请使用TIMESTAMP。
如果您想进一步节省时间,请使用 DATETIME。

mysql数据插入设置同个时间

直接使用 CURRENT_TIMESTAMP 或 NOW。

创建表时,将时间字段的默认值设置为CURRENT_TIMESTAMP。

或者写一个预插入触发器,统一设置该值。