Navicat 设置时间默认值(当前最新时间)

目录

  • 前言
  • 1. 原理分析
  • 2. datetime和timestamp的区别
  • 3. 补充

前言

文章较短,但是体会很深!!!!

1. 原理分析

需求任务:填写数据的时候,如果时间不写,数据会默认用最新时间补充

一开始设置Navicat的datetime默认值为now(),但一直提示错误!
我们知道Mysql关于当前时间的表达方式有很多:

  • NOW()
  • LOCALTIME
  • LOCALTIME()
  • LOCALTIMESTAMP
  • LOCALTIMESTAMP()
  • CURRENT_TIMESTAMP
  • CURRENT_TIMESTAMP()

最终只有这个通过:CURRENT_TIMESTAMP

如果设置为其他,出现如下错误:
Navicat 设置时间默认值(当前最新时间)_第1张图片


正确的方式设置如下:
Navicat 设置时间默认值(当前最新时间)_第2张图片

2. datetime和timestamp的区别

实战运用中,datetime和timestamp比较常用,但也有time、date等属性,具体差别如下:

类别 格式 取值范围 存储
year YYYY 1901 到 2155 1byte
time HH:MM:SS -838:59:59 到 838:59:59 3byte
date YYYY-MM-DD 1000-01-01 到 9999-12-31 3byte
datetime YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 到 9999-12-31 23:59:59 8byte
timestamp YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 到 2038-01-19 03:14:07 (UTC时间转换) 4byte

可以看出datetime和timestamp两者的格式一样、取值范围对于现在来说也没什么区别

在操作navicat的时候,datetime 和 timestamp 默认值为null,则保存的时候都是null值
唯一一个可以存储当前时间的是timestamp,将其属性设置为 CURRENT_TIMESTAMP

3. 补充

  1. Navicat 设置时间的属性还有date 、datetime等,但都没有最新的时间表示!
  2. 在mysql 中的字段应该这样表示:

如果是mysql版本比较低:(CURRENT_TIMESTAMP 版本较高可能失效,可试试now() )

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',

mysql版本比较高:

  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',

你可能感兴趣的:(数据库,mysql,datetime,时间)