首页
技术小册
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.1 CURDATE()和CURRENT_DATE()当前日期函数 在MySQL数据库管理系统中,日期和时间函数扮演着至关重要的角色,它们允许用户轻松地处理和操作数据库中的日期和时间信息。`CURDATE()`和`CURRENT_DATE()`函数是其中两个用于获取当前日期的函数,尽管它们在功能上非常相似,但在使用场景和语法细节上仍有些许差异。本章将深入解析这两个函数的工作原理、使用场景、以及它们之间的区别,帮助读者从入门到精通地掌握这些强大的日期处理工具。 #### 10.4.1.1 CURDATE()函数 `CURDATE()`函数是MySQL中用于获取当前日期(不包括时间部分)的内置函数。它返回一个`YYYY-MM-DD`格式的日期值,其中`YYYY`代表年,`MM`代表月,`DD`代表日。这个函数在需要当前日期进行数据库操作(如记录创建日期、数据分区等)时非常有用。 **语法**: ```sql CURDATE() ``` **返回值**: - 返回类型为`DATE`或`STRING`(取决于上下文),格式为`YYYY-MM-DD`。 **示例**: ```sql SELECT CURDATE(); ``` 假设当前日期是2023年4月15日,上述查询将返回`2023-04-15`。 **使用场景**: - 在插入或更新记录时自动设置日期字段。 - 在WHERE子句中用于筛选特定日期的记录。 - 在报表生成中显示当前日期作为报告日期。 #### 10.4.1.2 CURRENT_DATE()函数 `CURRENT_DATE()`函数与`CURDATE()`函数在功能上几乎完全等价,都是用来获取当前的日期(不包含时间)。然而,从SQL标准的角度来看,`CURRENT_DATE`是更标准的表达方式,而`CURDATE()`则是MySQL特有的函数。这意味着,如果你希望你的SQL代码具有更好的可移植性,可能会倾向于使用`CURRENT_DATE()`。 **语法**: ```sql CURRENT_DATE() ``` 或者在某些数据库系统中,也可以使用不带括号的形式(但在MySQL中通常带括号): ```sql CURRENT_DATE ``` **返回值**: - 与`CURDATE()`相同,返回类型为`DATE`或`STRING`,格式为`YYYY-MM-DD`。 **示例**: ```sql SELECT CURRENT_DATE(); ``` 同样,如果当前日期是2023年4月15日,上述查询也将返回`2023-04-15`。 **使用场景**: - 几乎与`CURDATE()`相同,但由于其符合SQL标准,更适用于跨数据库平台的代码编写。 #### 10.4.1.3 CURDATE()与CURRENT_DATE()的区别 尽管`CURDATE()`和`CURRENT_DATE()`在功能上几乎相同,但它们之间存在几个细微的差异: 1. **SQL标准性**:`CURRENT_DATE()`更符合SQL标准,而`CURDATE()`是MySQL特有的。这意味着,如果你计划将你的数据库代码迁移到其他数据库管理系统(如PostgreSQL、SQL Server等),使用`CURRENT_DATE()`可能会减少迁移过程中的修改量。 2. **语法偏好**:虽然两者在功能上等价,但MySQL用户可能会因为习惯或文档引导而偏好使用`CURDATE()`。然而,从代码可读性和可维护性的角度考虑,推荐使用符合SQL标准的函数。 3. **性能差异**:在实际应用中,两者的性能差异几乎可以忽略不计。MySQL优化器足够智能,能够识别并优化这些等效函数的调用。 #### 10.4.1.4 进阶应用 除了直接获取当前日期外,`CURDATE()`和`CURRENT_DATE()`还可以与其他SQL功能结合使用,以实现更复杂的日期处理逻辑。 - **日期比较**:可以将`CURDATE()`或`CURRENT_DATE()`的结果与表中的日期字段进行比较,筛选出满足特定日期条件的记录。 - **日期计算**:结合`DATE_ADD()`、`DATE_SUB()`等函数,可以计算当前日期之前或之后的特定天数,这在处理过期数据、设置提醒等方面非常有用。 - **格式化日期**:虽然`CURDATE()`和`CURRENT_DATE()`直接返回的是`YYYY-MM-DD`格式的日期,但你可以使用`DATE_FORMAT()`函数将其转换为其他格式,以满足不同的显示需求。 #### 10.4.1.5 注意事项 - 当使用这些函数时,请确保你的数据库服务器时间设置正确,因为它们是基于服务器的时间来获取当前日期的。 - 在进行跨时区的数据处理时,要特别注意时区对日期和时间的影响。虽然`CURDATE()`和`CURRENT_DATE()`只返回日期部分,不涉及时间,但在某些复杂的业务逻辑中,时区的差异仍然可能导致意想不到的结果。 #### 结论 `CURDATE()`和`CURRENT_DATE()`是MySQL中用于获取当前日期的两个重要函数。虽然它们在功能上非常相似,但在SQL标准性和使用习惯上存在差异。掌握这两个函数的使用,将帮助你更有效地处理数据库中的日期信息,无论是进行数据录入、查询筛选,还是报表生成。通过结合其他日期和时间函数,你可以实现更复杂的日期处理逻辑,满足各种业务需求。
上一篇:
10.4 日期和时间函数
下一篇:
10.4.2 CURTIME()和CURRENT_TIME()当前时间函数
该分类下的相关小册推荐:
MySQL从入门到精通(四)
MySQL8.0入门与实践
MySQL从入门到精通(五)
MySQL必会核心问题
MySQL从入门到精通(一)
SQL零基础到熟练应用(增删改查)
细说MySQL(零基础到高级应用)
MySQL 实战 45 讲
MySQL从入门到精通(二)