MySQL中的日期和时间类型是用于存储日期和时间数据的,以下是一些主要的日期和时间类型及其特点和用法:
1. DATE
类型:DATE
格式:YYYYMMDD
存储范围:10000101 到 99991231
用途:用于存储日期,不包含时间信息。
示例:SELECT DATE('20230401') AS example_date;
2. DATETIME
类型:DATETIME
格式:YYYYMMDD HH:MM:SS
存储范围:10000101 00:00:00 到 99991231 23:59:59
用途:用于存储日期和时间信息。
示例:SELECT DATETIME('20230401 12:30:00') AS example_datetime;
3. TIMESTAMP
类型:TIMESTAMP
格式:YYYYMMDD HH:MM:SS
存储范围:19700101 00:00:01 UTC 到 20380119 03:14:07 UTC
用途:用于存储日期和时间信息,常用于记录事件发生的时间戳。
特点:TIMESTAMP存储的是UTC时间,并且在某些操作(如插入或更新记录)时,MySQL会自动转换为当前会话的时区设置。
示例:SELECT TIMESTAMP('20230401 12:30:00') AS example_timestamp;
4. TIME
类型:TIME
格式:HH:MM:SS
存储范围:838:59:59 到 838:59:59
用途:用于存储时间信息,不包含日期。
示例:SELECT TIME('12:30:00') AS example_time;
5. YEAR
类型:YEAR
格式:YYYY 或 YY
存储范围:1901 到 2155 或 1900 到 2155(取决于MySQL版本)
用途:用于存储年份信息。
示例:SELECT YEAR('20230401') AS example_year;
6. DATE_FORMAT 和 STR_TO_DATE
DATE_FORMAT:用于将日期转换为字符串格式。
示例:SELECT DATE_FORMAT(NOW(), '%Y%m%d') AS formatted_date;
STR_TO_DATE:用于将字符串转换为日期格式。
示例:SELECT STR_TO_DATE('20230401', '%Y%m%d') AS parsed_date;
注意事项
当进行日期和时间的比较或计算时,应使用相应的函数,如CURDATE()
,CURTIME()
,NOW()
,DATE_ADD()
,DATE_SUB()
等。
使用SET time_zone
命令可以设置会话的时区。
这些类型为MySQL提供了强大的日期和时间处理能力,可以根据实际需求选择合适的类型进行存储和操作。