mysql日期类型简述

主要类型:YEAR、TIME、DATE、DATETIME、TIMESTAMP
(日期函数:current_date(当前日期)、current_time(当前时间)、
now()(当前日期和时间,根据字段类型显示日期或者时间)

日期类型        存储空间       日期格式                 日期范围
———— ———   ——————— —————————————–
datetime       8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp   4 bytes   YYYY-MM-DD HH:MM:SS   1970-01-01 00:00:01 ~ 2038
date               3 bytes     YYYY-MM-DD                         1000-01-01          ~ 9999-12-31
year               1 bytes      YYYY                                           1901                ~ 2155

DATETIME
DATETIME 用于表示年月日时分秒,是 DATE 和 TIME 的组合,并且记录的年份(见上表)比较长久。DATETIME类型,包含日期和时间部分。可以使用引号字符串或数字两种,年份可以是4 位,也可以是2位如果实际应用中有这样的需求,就可以使用 DATETIME 类型。

另外,timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。

TIMESTAMP
TIMESTAMP 用于表示 年月日 时分秒,但是记录的年份(见上表)比较短暂。
TIMESTAMP 和时区相关,更能反映当前时间。当插入日期时,会先转换为本地时区后再存放;当查询日期时,会将日期转换为本地时区后再显示。所以不同时区的人看到的同一时间是 不一样的。
表中的第一个 TIMESTAMP 列自动设置为系统时间(CURRENT_TIMESTAMP)。当插入或更新一行,但没有明确给 TIMESTAMP 列赋值,也会自动设置为当前系统时间。如果表中有第二个 TIMESTAMP 列,则默认值设置为0000-00-00 00:00:00。
TIMESTAMP 的属性受 Mysql 版本和服务器 SQLMode 的影响较大。
如果记录的日期需要让不同时区的人使用,最好使用 TIMESTAMP。
TIMESTAMP类型和DATETIME类型的表示格式相同,存储4个字节(比DATETIME少),取值范围少于DATETIME类型。
TIMESTAMP和DATETIME最大不同于:TIMESTAMP根据时区显示时间。

 

一般情况下,我倾向于使用 datetime 日期类型。

两者之间的比较:

1. timestamp容易所支持的范围比timedate要小。 并且容易出现超出的情况

2.timestamp比较受时区timezone的影响以及MYSQL版本和服务器的SQL MODE的影响.