mysql
字段的时间类型分为5种:DATE
,DATETIME
,TIME
,TIMESTAMP
,YEAR
;
下面就分别介绍这几种时间类型的区别
类型 | 字节大小 | 范围 | 格式 | 零值 | 用途 |
---|---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-32 | YYYY-MM-DD | 0000-00-00 | 日期值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-32 23:59:59 | YYYY-MM-DD hh:mm:ss | 0000-00-00 00:00:00 | 混合日期和时间值 |
TIME | 3 | -838:59:59/838:59:59 | hh:mm:ss | 00:00:00 | 时间值 |
TIMESTAMP | 4 | 1970-01-01 00:00:01/2038-01-19 03:14:07 | YYYY:MM:DD: hh:mm:ss | 0000-00-00 00:00:00 | 混合日期和时间值,时间戳 |
YEAR | 1 | 1901/2155 | YYYY | 0000 | 年份值 |
每个时间类型都有一个有效范围和一个零值,当指定的类型的值超过有效范围时,就会使用零值
YEAR
该类型表示年,格式为YYYY
有三种表示方法
- 直接使用四位数字或字符串,范围是1901-2155,输入的格式为'YYYY'或YYYY,如输入‘2011’或2011就回直接保存为2011,若超过范围就会表示为0000
- 使用两位的字符串表示,如果插入为'00'-'69'则表示为2000-2069,若插入'70-99'则表示为1970-1999.如输入'22'保存为2222,输入88保存为1988.'0'和'00'的效果一样
- 使用两位数字,如果插入为00-69则表示为2000-2069,若插入70-99则表示为1970-1999.如输入22保存为2222,输入88保存为1988.如果是0则表示为0000.注意该处和字符串的情况不一样
TIME
该类型表示时:分:秒,尽管时间范围为0~23,但是为了表示某些特殊的时间,mysql将小时的范围扩大了,并且支持负值。
对于TIME
类型复制,标准的格式为HH:MM:SS
,但不一定要这个格式
如果插入的格式为D HH:MM:SS
则类似插入了D*24+HH:MM:SS
,比如插入2 23:12:12
,相当于71:12:12
如果插入的格式为HHMM
或则SS
,那么其他位置就赋零值.比如30
相当于00:00:30
,比如11:30
相当于11:30:00
在mysql
中,系统可以自动识别HHMMSS
转化为标准格式.我们可以通过CURRENT_TIME()
获取当前的TIME
值
DATE
该类型表示年-月-日,标准格式为YYYY-MM-DD
,但是mysql
中还支持一些不严谨的格式:比如YYYY/MM/DD
等其他的符号来分割
在插入数据的数据的也可以使用YY-MM-DD
年份的转换和上面的YEAR
类型的规则一样的
可以使用CURRENT_DATE()
函数获取当前的DATE
值
DATETIME
该类型表示YYYY-MM-DD hh:mm:ss,可以看出DATE
和TIME
类型的结合体.所以赋值的规则时和上面DATE
和TIME
的时一样的
TIMESTAMP
该类型表示为YYYY-MM DD hh:mm:ss,取值范围比DATETIME
小,因此输入时一定要注意输入值的范围,超过范围会当作零值处理。
哈哈,到2038
年后就别用这个类型了
这只是一个简单的区分说明,具体mysql
时间类型的说明 请参考 官方文档
扫描关注,查看更多文章,提高编程能力
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。