时间和日期是数据库的基本数据类型,也是使用较多的一类数据类型,主要包括时间戳、日期、年等。
日期和日期类型:
- DATE
- DATETIME
- TIME
- TIMESTAMP
- YEAR
其中TIME,DATETIME,TIMESTAMP可以精确到微秒。
DATE:
日期类型,范围为'1000-01-01' 到 '9999-12-31'。
DATETIME(fsp):
日期时间,范围为'1000-01-01 00:00:00.000000' 到 '9999-12-31 23:59:59.999999'。fsp表示秒以下的精度,fsp取值为0~6,即最大精确到微秒。
TIME(fsp):
时间,范围为
'-838:59:59.000000' 到 '838:59:59.000000'。fsp表示秒以下的精度,fsp取值为0~6,即最大精确到微秒。
TIME类型的小时部分最大值超过了24,MySQL这样设计是因为TIME类型不仅表示1天的时间,也能表示两个事件的时间间隔,所以可以大于24,也可以小于24。
TIMESTAMP(fsp):
时间戳,范围为
'1970-01-01 00:00:01.000000' UTC 到 '2038-01-19 03:14:07.999999' UTC。fsp表示秒以下的精度,fsp取值为0~6,即最大精确到微秒。
YEAR(4):
年,范围为1901 到 2155。YEAR类型等同于YEAR(4),其中4表示显示宽度,MySQL 8.0.19 版本将废弃显示宽度。
时间日期的零值:
在非严格模式下,日间和日期允许零值存在,但这是不规范的使用,也不建议使用。部分时间日期零值如下:
数据类型 | 零值 |
---|---|
DATE | '0000-00-00' |
TIME | '00:00:00' |
DATETIME | '0000-00-00 00:00:00' |
TIMESTAMP | '0000-00-00 00:00:00' |
YEAR | '0000' |
时间日期函数:
- NOW(),获取当前日期和时间
- CURRENT_TIMESTAMP,获取当前日期和时间
- LOCALTIME,获取当前日期和时间
- LOCALTIME(),获取当前日期和时间
- LOCALTIMESTAMP,获取当前日期和时间
- LOCALTIMESTAMP(),获取当前日期和时间
- YEAR(),获取年
- MONTH(),获取月
- DAY(),获取天
- HOUR(),获取时
- MINUTE(),获取分
- SECOND(),获取秒
- TIME(),获取时间
- DATE(),获取日期