You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL获取含当前小时的无分秒日期的SQL查询语句报错求助

问题分析与解决方案

哦,我知道你卡在哪了!你的问题出在直接拼接日期、数字和字符串的方式错误——CURRENT_DATE是日期类型,HOUR(CURRENT_TIME)是整数,直接用+拼接会触发数据库的隐式类型转换,但结果根本不是你想要的YYYY-MM-DD HH:00:00格式的时间,自然匹配不到数据。

下面针对主流数据库给出正确的写法,你可以根据自己使用的数据库选择:

MySQL 解决方案

有两种简单的方式构造当前整点时间:

  • 方法一:用DATE_FORMAT直接格式化当前时间到整点
SELECT matchId FROM Matches 
WHERE matchDate = DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00');
  • 方法二:拼接日期、当前小时和固定的分钟秒
SELECT matchId FROM Matches 
WHERE matchDate = CONCAT(CURDATE(), ' ', HOUR(NOW()), ':00:00');

PostgreSQL 解决方案

PostgreSQL有专门的截断函数,一步到位:

SELECT matchId FROM Matches 
WHERE matchDate = DATE_TRUNC('hour', CURRENT_TIMESTAMP);

如果偏好拼接方式,记得把结果转为时间类型:

SELECT matchId FROM Matches 
WHERE matchDate = CONCAT(CURRENT_DATE, ' ', EXTRACT(HOUR FROM CURRENT_TIMESTAMP), ':00:00')::TIMESTAMP;

SQL Server 解决方案

可以用日期加减的方式快速得到整点:

SELECT matchId FROM Matches 
WHERE matchDate = DATEADD(HOUR, DATEDIFF(HOUR, 0, GETDATE()), 0);

或者用格式化函数生成目标字符串:

SELECT matchId FROM Matches 
WHERE matchDate = FORMAT(GETDATE(), 'yyyy-MM-dd HH:00:00');

小提醒

如果matchDate是datetime类型,优先用数据库内置的日期函数处理,尽量避免字符串拼接——不同时区、日期格式设置下,字符串拼接容易出现兼容问题哦。

内容的提问来源于stack exchange,提问作者djokerndthief

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:31:48