摘要:在本教程中,您将学习如何使用内置日期函数查询与MySQL今天日期匹配的数据。
使用内置日期函数获取 MySQL 今天的日期
有时,您可能希望从表中查询数据以获取日期列为今天的行,例如:
SELECT
column_list
FROM
table_name
WHERE
expired_date = today;
Code language: SQL (Structured Query Language) (sql)
要获取今天的日期,请使用CURDATE()
函数,如下所示:
mysql> SELECT CURDATE() today;
+------------+
| today |
+------------+
| 2017-07-08 |
+------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
或者您可以从NOW()
函数返回的当前时间获取日期部分:
mysql> SELECT DATE(NOW()) today;
+------------+
| today |
+------------+
| 2017-07-08 |
+------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
因此查询应更改为:
SELECT
column_list
FROM
table_name
WHERE
expired_date = CURDATE();
Code language: SQL (Structured Query Language) (sql)
如果expired_date
列同时包含日期和时间部分,则应使用DATE()
函数仅提取日期部分并将其与当前日期进行比较:
SELECT
column_list
FROM
table_name
WHERE
DATE(expired_date) = CURDATE();
Code language: SQL (Structured Query Language) (sql)
创建 MySQL 今日存储函数
如果您在查询中经常使用CURDATE()
函数,并且希望将其替换为today()
函数以使查询更具可读性,则可以创建自己的存储函数,名为today()
,如下所示:
DELIMITER $$
CREATE FUNCTION today()
RETURNS DATE
BEGIN
RETURN CURDATE();
END$$
DELIMITER ;
Code language: SQL (Structured Query Language) (sql)
现在,您可以使用您创建的today()
函数,如下所示:
mysql> SELECT today();
+------------+
| today() |
+------------+
| 2017-07-08 |
+------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
明天怎么样?它应该像这样简单:
mysql> SELECT today() + interval 1 day Tomorrow;
+------------+
| Tomorrow |
+------------+
| 2017-07-09 |
+------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
昨天也很简单:
mysql> SELECT today() - interval 1 day Yesterday;
+------------+
| Yesterday |
+------------+
| 2017-07-07 |
+------------+
1 row in set (0.00 sec)
Code language: SQL (Structured Query Language) (sql)
在本教程中,您学习了如何使用内置日期函数获取 MySQL 今天的日期。您还学习了如何使用 MySQL 中的存储函数开发自己的 Today 函数。
本教程有帮助吗?