除了字符串和数字,处理信息还会经常用到日期或时间。这种类型的数据被称为时间型数据,下面为数据库中使用时间型数据的一些案例:
- 预计未来发生某个特定事件(如发送客户订单)的日期;
- 客户订单实际被发送的日期
- 用户修改表中某行的日期与时间
- 雇员的生日
- 在数据仓库的yearly_sales表中,每行数据所关联的年份
- 在自动装配线上完成移到流水线所消耗的时间
mysql为所有这些情况提供了合适的数据类型,主要支持的日期时间类型有:
datetime、date、time、timestamp、year
数据库服务器可以用各种方式存储这些时间数据,格式字符串用于指定显示这些数据再被提取时的显示方式,以及在插入或更新时间列所需提供的日期字符串的格式。
因此,如果需要向默认格式为 YYYY-MM-DD的日期列中插入日期 2005年3月23日,就必须使用字符串 ‘2005-03-23’
下面介绍如何使用各种事件类型来实现前面提出的各个例子:
- 用于存储预计客户订单发送时间和雇员出生日期的列可以使用 date 类型,因为调度发送订单的时间i不可能精确到分秒的,另外对某人出生的具体时间也不需要了解
- 用于存放客户订单实际被发送时间的信息列可以为datetime类型,因为不仅需要跟踪发送的日期,记录发送的具体时间也是很重要的
- 记录用户合适修改表中特定行可以使用timestamp类型。timestamp类型保存的信息与datetime类型一样(包括年、月、日、时、分、秒),但mysql服务器可以向表中增加或修改数据行时自动为timestamp列产生当前的日期/时间
- 只需要年份数据可以使用year类型
- 存放完成某项任务所费时间的列可以使用time类型。这种类型的数据无法显示具体的日期