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月份,所以这是个错误的时间,将会报错,并保存为零值