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

MySQL查询contract_to大于当前日期结果不符合预期问题

嘿,这个问题我太熟悉啦,一眼就看出问题出在哪了!

问题原因分析

你写的SQL里踩了一个非常常见的小坑——把日期函数CURDATE()用单引号给括起来了!在MySQL里,单引号包裹的内容会被当作普通的字符串处理,而不是去执行这个函数。也就是说,你实际在做的是把contract_to字段和字符串'CURDATE()'做比较,而不是和当前的系统日期(也就是你预期的2019-03-30)进行比较。

那为什么会返回2019-03-20这条不符合预期的记录呢?这是因为MySQL在对比字符串和日期类型的时候,会尝试把字符串转换为日期格式。但'CURDATE()'根本不是合法的日期字符串,转换后会变成0000-00-00,而所有大于0000-00-00的日期都会被筛选出来,所以2019-03-20这条记录也被误选进来了。

解决方案

只需要去掉CURDATE()外面的单引号,让MySQL识别这是一个函数调用就可以解决问题啦!修正后的SQL语句如下:

SELECT `contract_to`, CURDATE() FROM `contacts` WHERE `contract_to` > CURDATE();

这样MySQL就会正确计算出当前日期,然后和contract_to字段的日期值做真实的日期比较,最终就能得到你预期的结果——只有contract_to大于当前日期的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:32:40