MySQL中日期和时间数据类型介绍
MySQL中的日期和时间数据类型包括date、time、datetime、timestamp、year五种类型。其中,date用于存储日期,time用于存储时间,datetime用于存储日期和时间的组合,timestamp用于存储日期和时间的组合和自动更新时间戳的功能,year用于存储年份。
1. date类型
date类型用来记录年月日,格式为YYYY-MM-DD。
示例:
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
birthdate DATE
);
INSERT INTO example (birthdate) VALUES ('1996-03-15');
以上代码创建了一个名为example的表,并插入了一条数据,birthdate为1996年3月15日。
2. time类型
time类型用来记录时分秒,格式为HH:MM:SS。
示例:
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
duration TIME
);
INSERT INTO example (duration) VALUES ('02:15:30');
以上代码创建了一个名为example的表,并插入了一条数据,duration为2小时15分30秒。
3. datetime类型
datetime类型用来记录日期和时间的组合,格式为YYYY-MM-DD HH:MM:SS。
示例:
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
created_at DATETIME
);
INSERT INTO example (created_at) VALUES ('2022-01-01 10:30:00');
以上代码创建了一个名为example的表,并插入了一条数据,created_at为2022年1月1日10点30分0秒。
4. timestamp类型
timestamp类型也用来记录日期和时间的组合,在插入数据时会自动添加时间戳,格式为YYYY-MM-DD HH:MM:SS,且只能存储到2038年。在更新数据时也会更新时间戳。
示例:
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
INSERT INTO example (id) VALUES (1);
UPDATE example SET id=2 WHERE id=1;
以上代码创建了一个名为example的表,并插入了一条数据,更新数据时会自动更新updated_at字段的时间戳。
5. year类型
year类型用来记录年份,格式为YYYY。
示例:
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
year YEAR
);
INSERT INTO example (year) VALUES (2022);
以上代码创建了一个名为example的表,并插入了一条数据,year为2022年。
MySQL日期和时间计算函数
1. NOW()函数
NOW()函数用于获取当前日期和时间。
示例:
SELECT NOW();
以上代码会返回当前的日期和时间。
2. DATE()函数
DATE()函数用于获取日期。
示例:
SELECT DATE('2022-01-01 10:30:00');
以上代码会返回2022-01-01。
3. TIME()函数
TIME()函数用于获取时间。
示例:
SELECT TIME('2022-01-01 10:30:00');
以上代码会返回10:30:00。
4. DATEDIFF()函数
DATEDIFF()函数用于获取两个日期之间的天数差。
示例:
SELECT DATEDIFF('2022-01-02', '2022-01-01');
以上代码会返回1,即2022年1月2日和2022年1月1日相隔1天。
5. DATE_ADD()函数
DATE_ADD()函数用于给日期加上一定的时间。
示例:
SELECT DATE_ADD('2022-01-01', INTERVAL 1 DAY);
以上代码会返回2022-01-02,即2022年1月1日加1天。
6. DATE_SUB()函数
DATE_SUB()函数用于给日期减去一定的时间。
示例:
SELECT DATE_SUB('2022-01-01', INTERVAL 1 DAY);
以上代码会返回2021-12-31,即2022年1月1日减1天。
7. STR_TO_DATE()函数
STR_TO_DATE()函数用于将字符串转换为日期格式。
示例:
SELECT STR_TO_DATE('01-01-2022', '%d-%m-%Y');
以上代码会返回2022-01-01,即将01-01-2022转换为日期格式。
8. DATE_FORMAT()函数
DATE_FORMAT()函数用于将日期格式化为指定的字符串格式。
示例:
SELECT DATE_FORMAT('2022-01-01', '%Y年%m月%d日');
以上代码会返回2022年01月01日,即将2022-01-01格式化为指定的字符串格式。
总结
MySQL中日期和时间数据类型包括date、time、datetime、timestamp、year五种类型,通过计算函数可以对日期和时间进行加减、格式化等操作。处理日期和时间数据在开发中非常重要,善于利用MySQL提供的函数可以提高开发效率和代码的可读性。