首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
9.1 基本查询语句
9.2 单表查询
9.2.1 查询所有字段
9.2.2 查询指定字段
9.2.3 查询指定数据
9.2.4 带关键字IN的查询
9.2.5 带关键字BETWEEN AND的范围查询
9.2.6 带LIKE的字符匹配查询
9.2.7 用IS NULL关键字查询空值
9.2.8 带AND的多条件查询
9.2.9 带OR的多条件查询
9.2.10 用DISTINCT关键字去除结果中的重复行
9.2.11 用ORDER BY关键字对查询结果进行排序
9.2.12 用GROUP BY关键字分组查询
9.2.13 用LIMIT限制查询结果的数量
9.3 聚合函数查询
9.3.1 COUNT()统计函数
9.3.2 SUM()求和函数
9.3.3 AVG()平均数函数
9.3.4 MAX()最大值函数
9.3.5 MIN()最小值函数
9.4 连接查询
9.4.1 内连接查询
9.4.2 外连接查询
9.4.3 复合条件连接查询
9.5 子查询
9.5.1 带IN关键字的子查询
9.5.2 带比较运算符的子查询
9.5.3 带EXISTS关键字的子查询
9.5.4 带ANY关键字的子查询
9.5.5 带ALL关键字的子查询
9.6 合并查询结果
9.7 定义表和字段的别名
9.7.1 为表取别名
9.7.2 为字段取别名
9.8 使用正则表达式查询
9.8.1 匹配指定字符中的任意一个
9.8.2 使用“*”和“ ”来匹配多个字符
9.8.3 匹配以指定的字符开头和结束的记录
10.1 MySQL函数
10.2 数学函数
10.2.1 ABS(x)绝对值函数
10.2.2 FLOOR(x)向下取整函数
10.2.3 RAND()随机数函数
10.2.4 PI()圆周率函数
10.2.5 TRUNCATE(x,y)截断函数
10.2.6 ROUND(x)近似值函数和ROUND(x,y)四舍五入函数
10.2.7 SQRT(x)平方函数
10.3 字符串函数
10.3.1 INSERT(s1,x,len,s2)替换函数
10.3.2 UPPER(s)函数和UCASE(s)字母大写函数
10.3.3 LEFT(s,n)取左函数
10.3.4 RTRIM(s)去空格函数
10.3.5 SUBSTRING(s,n,len)截取函数
10.3.6 REVERSE(s)反转函数
10.3.7 FIELD(s,s1,s2,…,sn)位置函数
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3个位置函数
10.4 日期和时间函数
10.4.1 CURDATE()和CURRENT_DATE()当前日期函数
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
10.4.3 NOW()当前日期和时间函数
10.4.4 DATEDIFF(d1,d2)间隔天数函数
10.4.5 ADDDATE(d,n)日期计算函数
10.4.6 ADDDATE(d,INTERVAL expr type)日期时间计算函数
10.4.7 SUBDATE(d,n)日期计算函数
10.5 条件判断函数
10.6 系统信息函数
10.6.1 获取MySQL版本号、连接数和数据库名的函数
10.6.2 获取用户名的函数
10.6.3 获取字符串的字符集和排序方式的函数
10.7.1 格式化函数FORMAT(x,n)
10.7.2 改变字符集的函数
10.7.3 改变字段数据类型的函数
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(三)
小册名称:MySQL从入门到精通(三)
### 10.4.6 ADDDATE(d, INTERVAL expr type) 日期时间计算函数 在MySQL中,处理日期和时间数据是数据库操作中不可或缺的一部分。随着数据量的增长和业务逻辑的复杂化,对日期和时间的精确操作变得尤为重要。`ADDDATE()` 函数是MySQL提供的一个强大的日期时间计算函数,它允许用户在指定的日期上加上一个时间间隔,从而生成新的日期。特别是 `ADDDATE(d, INTERVAL expr type)` 这种形式的调用,更是灵活多变,能够满足各种复杂的日期计算需求。 #### 10.4.6.1 函数概述 `ADDDATE(d, INTERVAL expr type)` 函数的基本作用是向日期 `d` 添加一个由 `expr` 和 `type` 指定的时间间隔,从而得到一个新的日期。这里,`d` 是起始日期,可以是一个日期或日期时间表达式;`expr` 是一个正整数或负整数,表示要添加或减去的时间量;`type` 则是一个关键字,指明了时间间隔的单位,如`DAY`、`MONTH`、`YEAR`等。 #### 10.4.6.2 参数详解 - **d**: 起始日期,可以是任何有效的日期或日期时间表达式,如`'2023-04-01'`、`CURDATE()`等。 - **INTERVAL expr type**: 时间间隔表达式,其中`expr`是一个整数,表示间隔的数量,`type`是间隔的单位,如`DAY`(天)、`MONTH`(月)、`YEAR`(年)等。MySQL还支持多种其他单位,如`HOUR`(小时)、`MINUTE`(分钟)、`SECOND`(秒)等,为日期时间计算提供了极大的灵活性。 #### 10.4.6.3 使用示例 ##### 示例 1:向指定日期添加天数 ```sql SELECT ADDDATE('2023-04-01', INTERVAL 10 DAY) AS NewDate; -- 结果:'2023-04-11' ``` 这个例子展示了如何在`2023-04-01`这个日期上加上10天,得到新的日期`2023-04-11`。 ##### 示例 2:向当前日期添加月份 ```sql SELECT ADDDATE(CURDATE(), INTERVAL 2 MONTH) AS FutureDate; -- 假设今天是2023-04-01,则结果可能是'2023-06-01'(注意:实际结果可能因月份天数不同而有所变化) ``` 这个示例使用了`CURDATE()`函数来获取当前日期,并在此基础上加上2个月。注意,当向日期添加月份时,如果目标月份的天数少于起始月份的天数,MySQL会自动调整到目标月份的最后一天。 ##### 示例 3:使用负值进行日期减法 ```sql SELECT ADDDATE('2023-04-15', INTERVAL -5 DAY) AS PastDate; -- 结果:'2023-04-10' ``` 这个例子展示了如何使用负值来从日期中减去天数,从而得到过去的某个日期。 ##### 示例 4:结合多个时间单位 虽然`ADDDATE()`函数本身不直接支持在一个表达式中指定多个时间单位(如同时加天和月),但可以通过连续调用或使用其他日期时间函数(如`DATE_ADD()`,它提供了类似的功能但语法上更灵活)来实现类似的效果。 #### 10.4.6.4 注意事项 1. **日期范围**:使用`ADDDATE()`函数时,要注意目标日期是否在MySQL支持的日期范围内(`1000-01-01`到`9999-12-31`)。 2. **月份和年份的特殊性**:当向日期添加月份或年份时,由于不同月份的天数不同,以及闰年的存在,结果可能会与直观预期有所不同。因此,在进行这类计算时,最好进行验证以确保结果的准确性。 3. **性能考虑**:虽然`ADDDATE()`函数对于单个或少量日期计算来说性能很好,但在处理大量数据时,频繁地调用此类函数可能会对数据库性能产生影响。在这种情况下,考虑使用更高效的查询策略或批量处理技术。 4. **时区问题**:虽然`ADDDATE()`函数本身不涉及时区转换,但在处理涉及多个时区的日期时间数据时,需要特别注意时区差异可能带来的问题。 #### 10.4.6.5 总结 `ADDDATE(d, INTERVAL expr type)`是MySQL中一个非常实用的日期时间计算函数,它允许用户以灵活的方式向指定日期添加或减去指定的时间间隔。通过熟练掌握这个函数的用法,我们可以更高效地处理各种复杂的日期时间计算任务,从而优化数据库查询和应用的性能。在实际应用中,我们还需要注意日期范围、月份和年份的特殊性、性能考虑以及时区问题等方面,以确保计算结果的准确性和可靠性。
上一篇:
10.4.5 ADDDATE(d,n)日期计算函数
下一篇:
10.4.7 SUBDATE(d,n)日期计算函数
该分类下的相关小册推荐:
SQL零基础到熟练应用(增删改查)
MySQL从入门到精通(五)
细说MySQL(零基础到高级应用)
MySQL必会核心问题
MySQL从入门到精通(二)
MySQL8.0入门与实践
MySQL从入门到精通(一)
MySQL从入门到精通(四)
MySQL 实战 45 讲