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 

相同点: 

  1. 两个数据类型存储时间的格式一致。均为 YYYY-MM-DD HH:MM:SS
  2. 两个数据类型都包含「日期」和「时间」部分。
  3. 两个数据类型都可以存储微秒的小数秒(秒后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 |
+---------------------+---------------------+

 

posted @ 2022-09-17 17:05  lypbendlf  阅读(196)  评论(0编辑  收藏  举报