(补3)(single dog single day 人丑就要多读书)
3.2.6时态(日期时间)数据类型
—————————————————————
MySQL提供了多种存储时态(与时间相关)值的类型:Date,time datetime,timestamp和year.
1.对于数据类型time,datetime和timestampMySQL增加了对小数秒的支持
2.自动把当前时间戳当作初始值并进行更新.在以前的版本里,这些属性只能用于表里的大部分单个timestamp列.现在可以用于任何timestamp列,并且也可以用于datetime列
3.MySQL丢弃了对year(2)的支持,取而代之是允许创建year(4)那样的列
下面是各时态数据类型的取值范围:
类型名称 取值范围
date '1001-01-01'~'9999-12-31'
time '-838:59:59[.000000]'~'838:59:59[.000000]
datetime '1001-01-01 00:00:00[.000000]~'9999-12-31 23:59:59[.9999]'
timestamp '1970-01-01 00:00:00[.000000]~'2038-01-19 03:14:07[.999999]'
year 1901~215
如果要声明包含小数秒部分的时态类型列,则需要把定义写成type_name(fsp)其中type_name为time,datetime,或者timestamp,fsp为小数秒精度.fsp的范围是0~6如果未给定则默认值为0
t1 time(3)
t2 time(6)
时态类型数据的存储空间要求
类型名称 存储要求(5.6.4以前的版本) 存储要求(5.6.4及以后版本)
date 3字节 3字节
time 3字节 3字节+fsp的存储要求
datetime 8字节 5字节+fsp的存储要求
timestamp 4字节 4字节+fsp的存储要求
year 1字节 1字节
小数秒部分的存储空间要求
小数秒精度 存储要求
0 0字节
1,2 1字节
3,4 2字节
5,6 3字节
当为某种日期/时间类型插入非法值时,该类型会把它存储为一个零值.如果想要把非法输入处理为错误,并拒绝接受,需要设置相应的SQL模式.
类型定义 零值
date '0000-00-00'
time '00:00:00[.00000]'
datetime '0000-00-00 00:00:00[.000000]'
timestamp '0000-00-00 00:00:00[.000000]'
year 0000
MySQL的日期表示为 年-月-日 为满足检索显示要求,可以使用date_format()函数和time_foramt()函数来显示各种格式的日期和时间
在输入日期方面,MySQL的处理方式比较灵活,它可以把两位数的年份转换为四位数输入的年份,并且 对于小于10的月和日提供前导数字0,不过必须是年月日的顺序,对于平常的一些习惯用法,可以使用str_to_date ()函数把非iso格式的字符串转换为iso格式的日期值