这是命令行操作MySQL数据库系列博客的第六篇,今天这篇博客记录日期和时间类型的用法。
日期与时间类型是为了方便在数据库中存储日期和时间而设计的,数据库有多种表示日期和时间的数据类型。其中,year类型表示年,date类型表示日期,time类型表示时间,datetime和timestamp表示日期和时间。下面从这5种日期与时间类型的字节数、取值范围和零值等方面进行对比,如下表所示。
类型 | 字节数 | 取值范围 | 零值 |
year | 1 | 1901 ~ 2155 | 0000 |
date | 4 | 1000-01-01 ~ 9999-12-31 | 0000-00-00 |
time | 3 | -838:59:59 ~ 838:59:59 | 00:00:00 |
datetime | 8 | 1000-01-01 00:00:00 ~ 999-12-21 23:59:59 | 0000-00-00 00:00:00 |
timestamp | 4 | 1970-01-01 08:00:01 ~ 2038-01-19 11:14:07 | 0000-00-00 00:00:00 |
每种日期与时间类型都有一个有效范围。如果插入的值超过了这个范围,系统就会报错,并将零值插入到数据库中。不同的日期与时间类型均有不同的零值.
插入日期时间,日期年月日和时间时分秒可以使用 “ : - _ / ” 中的任意字符来分隔,如果单独插入时间,则会报错!!!
建议年份使用‘-’或者‘/’作为分割符,时间统一使用‘:’作为分隔符。
例:
创建表并插入数据:
查询数据:
也可以通过mysql 本身提供的时间函数获取:
常用的时间函数:
- curdate() - 获得当前的date, 可直接插入date类型中.
- now() - 获得当前的datetime, 可直接插入datetime和timestamp类型中.
- time() - 获取参数给定时间串中的时分秒,可直接插入time类型中.
- year() - 获取参数给定时间串中的年份,可直接插入year类型中.
- month() 、day()、hour()、minute()、second() 获取参数给定时间串中的月、日、时、分、秒值.
例:
总结:
其实只要注意文中黄色标注内容,和例子,和常用的时间函数,这三个部分,日期和时间类型也不过就是如此,挺好理解的,多看下例子,对照敲一遍应该也差不多了!