- MySQL 8.0从入门到实战
- 张文亮编著
- 519字
- 2024-12-27 21:25:55
3.2 日期和时间数据类型
表示时间值的日期和时间类型有这样几种:datetime、date、timestamp、time和year。每种时间类型都有一个有效值范围和一个“零”值,当指定不符合规则的日期或时间数据时,MySQL将使用“零”值来替换。
使用日期和时间类型时,需要注意以下事项:
· MySQL以标准格式输出给定的日期或时间类型的值。如果使用日期或时间类型的格式不恰当,可能会出现不可预测的结果。
· MySQL尝试以多种格式解释用户输入的值,但是日期部分必须按年-月-日的顺序给出(例如'21-06-01'),不能使用月-日-年或日-月-年的顺序(例如'01-06-21'、'06-01-21')。如果要将其他顺序的字符串转换为年-月-日的顺序,可以使用str_to_date()函数进行转换。
· 对于包含2位数年份值的不明确日期,MySQL会使用以下规则进行解释:
➢ 70—99范围内的年份值转换为1970—1999。
➢ 00—69范围内的年份值转换为2000—2069。
· 默认情况下,当MySQL遇到无效的日期或时间类型的值时,会将该值转换为该类型的“零”值。如果时间类型的值超出范围,那么此值会被剪裁到时间范围的相应端点。
· MySQL允许将“零”值'0000-00-00'存储为“虚拟日期”。在某些情况下,这比使用null值更方便,并且使用更少的数据和索引空间。要禁止存储'0000-00-00'为“虚拟日期”,可以启用no_zero_date模式(set session sql_mode='strict_trans_tables,no_zero_date';)。
表3-4是所有日期和时间类型格式的详细说明。
表3-4 所有日期和时间类型格式的详细说明