如何从MySQL数据库中查询匹配今日日期的数据
查询今日预约数据的SQL实现
嘿,这事儿简单!要查询appointment_date(date类型)列匹配今日日期的数据,不同数据库的SQL写法略有差异,我给你整理了几种常用场景的实现:
MySQL/MariaDB
直接用CURDATE()函数获取纯今日日期,和date类型列精准匹配:
SELECT * FROM your_table_name WHERE appointment_date = CURDATE();
CURDATE()返回的是不带时间的当前日期,刚好和你的appointment_date列类型完全契合,不会出现时间部分干扰匹配的问题。
PostgreSQL
用CURRENT_DATE获取今日日期即可:
SELECT * FROM your_table_name WHERE appointment_date = CURRENT_DATE;
CURRENT_DATE本身就是date类型,和你的列类型匹配度拉满,过滤结果精准。
SQL Server
如果是SQL Server 2012及以上版本,可以直接用CURRENT_DATE;兼容旧版本的话,需要把带时间的当前日期转成纯date类型:
-- 兼容所有SQL Server版本的写法 SELECT * FROM your_table_name WHERE appointment_date = CAST(GETDATE() AS DATE); -- SQL Server 2012+ 简化写法 SELECT * FROM your_table_name WHERE appointment_date = CURRENT_DATE;
CAST(GETDATE() AS DATE)会截断当前时间的时分秒部分,只保留日期,确保和你的appointment_date列匹配。
Oracle
通过TRUNC(SYSDATE)截断系统时间到日期部分:
SELECT * FROM your_table_name WHERE appointment_date = TRUNC(SYSDATE);
TRUNC(SYSDATE)会去掉系统当前时间的时分秒,返回纯日期,完美匹配你的date类型列。
小提醒
- 要是你的
appointment_date列实际是datetime/timestamp类型,上面的写法依然有效,因为我们用到的函数都只保留了日期部分,数据库会自动处理类型转换。 - 如果数据库时区和你的业务时区不一致,记得调整日期函数的时区设置(比如MySQL里可以用
CURDATE() AT TIME ZONE 'Asia/Shanghai',根据实际时区修改)。
内容的提问来源于stack exchange,提问作者Himamsh Kilubatla
相关产品推荐
相关产品推荐

