mysql日期类型:
- YEAR类型通常用来表示年。
- DATE类型通常用来表示年、月、日。
- TIME类型通常用来表示时、分、秒。
- DATETIME类型通常用来表示年、月、日、时、分、秒。
- TIMESTAMP类型通常用来表示带时区的年、月、日、时、分、秒。
日期函数:
- current_date:返回当前日期,格式为'YYYY-MM-DD'。eg: 2023-07-04'。
- current_time:返回当前时间,格式为'HH:MM:SS'。eg: '15:30:00'。
- current_timestamp:返回当前时间戳,格式为'YYYY-MM-DD HH:MM:SS'。
eg: '2023-07-04 15:30:00'
timestamp类型:(myql 高版本>5.5才有以下知识点
参考:【MySQL】explicit_defaults_for_timestamp 参数详解-CSDN博客
1、参数为关闭状态:explicit_defaults_for_timestamp=OFF (默认关闭)
默认添加字段属性为:
NOT NULL、 非空
DEFAULT CURRENT_TIMESTAMP 、 创建默认为当前时间
ON UPDATE CURRENT_TIMESTAMP 记录当前修改时间
【注意】:当存在两个timestamp字段时,第二个timestamp属性为:
NOT NULL、
DEFAULT '0000-00-00 00:00:00'
原因:
timestamp字段类型只能存在一个current_timestamp (只存在一个实时更新当前时间
2、参数为打开状态:explicit_defaults_for_timestamp=ON
默认添加字段属性为:
null 空
default null 默认为空
插入时,直接记录为null。
三、TIMESTAMP和DATETIME的区别:
- TIMESTAMP存储空间比较小,表示的日期时间范围比较小。
- 底层存储方式不同,TIMESTAMP底层存储的是毫秒值,距离1970-1-1 0:0:0 0毫秒的毫秒值。
- 两个日期比较大小或日期计算时,TIMESTAMP更方便、更快。
- TIMESTAMP和时区有关,TIMESTAMP会根据用户的时区不同,显示不同的结果。而DATETIME则只能反映出插入时当地的时区,其他时区的人查看数据必然会有误差的。
注意:timestamp 最大时间到2038年,慎用(原因:最大字节为4,换算到2038年
北京时间2038-01-19 11:14:07