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 @   lypbendlf  阅读(219)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-09-17 安装keras+tf
点击右上角即可分享
微信分享提示