mysql 5.6版本 DATETIME问题
转自:https://kalacloud.com/blog/difference-between-mysql-datetime-and-timestamp-datatypes/
1.建表不支持
使用如下字段建表时,不支持:
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
报错:Invalid default value for 'create_time',搜索之后发现是数据库版本的问题,5.5版本的mysql不支持这样建表。
在表插入数据时使用的是now函数:
mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2022-09-16 20:23:22 | +---------------------+
now会显示日期+时间。
2.DATETIME和TIMESTAMP
相同点:
- 两个数据类型存储时间的格式一致。均为
YYYY-MM-DD HH:MM:SS
- 两个数据类型都包含「日期」和「时间」部分。
- 两个数据类型都可以存储微秒的小数秒(秒后6位小数秒)
区别:
当存入时间是NULL时,
TIMESTAMP
:会自动存储当前时间(now()
)。DATETIME
:不会自动存储当前时间,会直接存入NULL
值。
TIMESTAMP可以自动转换时区,涉及时间加减计算更方便。
创建表,例子:
CREATE TABLE time_demo_kalacloud (`timestamp` timestamp,`datetime` datetime); insert into time_demo_kalacloud values (NULL,NULL), (now(),now()), ('19970701171207','19970701171207'); select * from time_demo_kalacloud; +---------------------+---------------------+ | timestamp | datetime | +---------------------+---------------------+ | 2022-09-17 16:52:15 | NULL | | 2022-09-17 16:52:15 | 2022-09-17 16:52:15 | | 1997-07-01 17:12:07 | 1997-07-01 17:12:07 | +---------------------+---------------------+