MySQL支持的数据类型(2)( 日期)

日期和时间类型 字节 最小值 最大值
date 4 1000-01-01 9999-12-31
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
timestamp 4 19700101080001 2038年的某个时刻
time 3 -838:59:59  838:59:59
year 1 1901 2155
数据类型 零值表示
datetime 0000-00-00 00:00:00
date 0000-00-00
timestamp 0000000000000000
time 00:00:00
year 0000

每种日期时间类型都有一个有效值范围,拆除这个范围系统就会进行错误提示,并将以零值(上表为零值展示表)进行存储

[timestamp]

1.若想将timestamp查询的值返回为数字,应在timestamp列后添加"+0"。

time1表中只有一个字段t1,类型为timestamp(MySQL自动填补current_timestamp属性)

select t1 from time1;

select t1+0 from time1;//查询的值返回为数字

2.系统会为timestamp字段自动创建默认值"current_timestamp(系统日期)"。如果有第二个timestamp,则默认值为零值

3.MySQL规定timestamp类型字段只能有一列默认值为current_timestamp。

4.时区相关。当插入日期时,会先转换成本地时区后存放;从数据库取出时,需要将日期转换为本地时区后显示。

5.timestamp受MySQL版本和服务器SQLMode影响较大。本文是以MySQL5.0为例。

[year]

1.当应用只需要记录年份时,year比date更省空间

2.year有两种格式:yy和yyyy。yyyy的范围是1901~2155,yy的范围是1970~2069

00~69表示2000~2069,70~99表示1970~1999。

[datetime]

1.不严格语法:任何标点符号都可以做日期部分或时间部分的间隔符 eg:'38[11&23 11&30+12' 等同于 '38-11-23 11:30:12' 多能够正常插入。

2.没有间隔符的字符串,如果是合法的,也将成功保存。eg:19961119083028将会被成功保存为 1996-11-19 08:30:28

3.输入错误的时间将会报错并保存为零值eg:1998-13-23 11:30:12 没有13月份,所以这是个错误的时间,将会报错,并保存为零值

原文地址:https://www.cnblogs.com/drake-guo/p/6126289.html