版本:5.7

结论:对于NOT NULL DEFAULT current_timestamp(),若是timestamp类型设置为null会被设置成当前时间,而对于datetime会报错

1.timestamp类型

CREATE TABLE `table_1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `create_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) COMMENT '创建时间',
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ;
insert into table_1(name, create_time) values('1', null);
select * from table_1;

2.datetime类型

CREATE TABLE `table_2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `create_time` datetime NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ;
insert into table_2(name, create_time) values('1', null)

MySQL :: MySQL 5.7 Reference Manual :: 11.2.6 Automatic Initialization and Updating for TIMESTAMP and DATETIME https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html

In addition, if the explicit_defaults_for_timestamp system variable is disabled, you can initialize or update any TIMESTAMP (but not DATETIME ) column to the current date and time by assigning it a NULL value, unless it has been defined with the NULL attribute to permit NULL values.

MySQL 数据库 中,处理日期字符串并将其转换为 NULL 值是一项常见的任务。日期数据在 数据库 中通常以特定的格式存储,但有时会遇到不符合格式要求的日期字符串。在这种情况下,我们需要进行异常处理,将无效的日期字符串转换为 NULL 值,以确保数据的一致性和准确性。通过使用 MySQL 的异常处理机制,我们可以有效地处理日期字符串并将其转换为 NULL 值。下面是一个示例,展示了如何使用 MySQL 的异常处理机制来处理日期字符串并将其转换为 NULL 值。的列,用于存储日期值。我们的目标是将无效的日期字符串转换为 NULL 值。 CREATE TABLE `praise_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `pic_id` varchar(64) DEFAULT NULL COMMENT '图片ID', `created_time` datetime DEFAULT CURRENT_ TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `pic_id` (`pic_id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=364 按照时间维度进行统计的前提是需要 数据库 中有保留时间信息,建议是使用 MySQL 自带的 datetime 类型来记录时间。 ` timestamp ` datetime DEFAULT NULL , 在 MySQL 中对于时间日期的处理的函数主要是DATE_FORMAT(date,format)。可用的参数如下 3.记事本打开后将 datetime 类型字段更改为 `create_time` datetime NOT NULL DEFAULT CURRENT_ TIMESTAMP COMMENT '创建时间', 设置 默认值为CURRENT_ TIMESTAMP 4.最后在将该sql文件导入 数据库 中就有非空有默认值 后台(连接点:连接 数据库 JDBC、连接前端(控制,控制图跳转,和给前端传递数据)) 数据库 (存数据,Excel、word、Txt) 问题:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c **修改方式:**SELECT @@sql_mode; SET sql_mode=( 解决 Mysql datetime (0) NULL DEFAULT NULL 报错 将 数据库 mysql 5.7导出为sql,在 mysql 5.5上进行导入,会出现 datetime (0) NULL DEFAULT NULL 报错,出现错误的原因主要是因为 mysql 5.7和 mysql 5.5的 datetime timestamp 不兼容, mysql 5.7导出的格式为 : datetime (0)而 mysql 5.5则无法识别该语法 解决方法: 1)将导出语句中 datetime (0) 改为 datetime ,或者是times 通过navicat客户端修改 datetime 默认值时,遇到了问题。 数据库 表字段类型 datetime ,原来默认为 NULL ,当通过界面将默认值 设置 为当前时间时,提示“1067-Invalid default value for 'CREATE_TM'”,而建表的时候,则不会出现这个问题,比如建表语句: CREATE TABLE `app_info1` ( `id` bigint(21) un CREATE TABLE `t_order` ( `order_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '运单id', `order_no` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '运单号', `send_date` datetime (0) NULL DEFAULT NULL COMMENT '发货时间', 我正在使用带有Sequel Pro界面的 MySQL 数据库 ,并且是SQL新手.我正在尝试从csv文件导入数据,我导入的其中一个列是 datetime 类型.但是,我收到数据的格式是mm / dd / yy hh:mm AM / PM或 null .最初,我将列的类型修改为varchar以避免问题,但现在我需要对数据执行一些日期函数,除非列具有日期时间类型和格式,否则无法完成,所以我需要一种方法将传入的数据转... CREATE TABLE `file` ( `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件md5', `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT... 1,YYYYmmdd格式日期转换为 null 看如下记录,一个能取到值,一个取不到值** MySQL > SELECT DATE_FORMAT(STR_TO_DATE(‘20150922 13:01:01’, ‘%Y%m%d %H:%m:%s’),’%H:%m’);+————————————————————————–+| DATE_FORMAT(STR_TO_DATE(‘20150922 13:01... MySQL 允许 datetime 字段的 NULL 值。我只是测试它: mysql > create table datetime test (testcolumn datetime null default null );Query OK, 0 rows affected (0.10 sec) mysql > insert into datetime test (testcolumn) values (n... [解决] mysql 字段 datetime 值为 null 与 java Local dateTime 映射空指针问题 报错内容如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column '**' from result set. Cause: java.lang.Nu