MySQL查询显示结果超出范围
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL查询显示结果超出范围相关的知识,希望对你有一定的参考价值。
我在与阿贾克斯的search.php我的文件中的以下的mysqli查询。
SELECT demand2.* FROM demand2
WHERE ddate >= '$dto' AND ddate >= '$dfrom' AND !(mach='--' OR mach='-' OR mach='' OR mach='----' OR mach='-----' OR mach='---');
场ddate
是VARCHAR2的数据类型
当我输入的日期从2019年1月1日和日期30-01-2019了,会显示一个日期一样29-12-2019结果。
因此,我不能找到解决方案,使得到规定的范围内。请帮忙。
答案
正如rypskar说,你的领域的类型应该是日期。
如果你不想改变fiels的数据类型,那么你必须将字符串转换成日期STR_TO_DATE(ddate,“%D-%间%Y”)。但不建议这样做,因为它会导致大型表的性能下降。
所以,你的查询会是这样的(未测试!):
SELECT demand2.* FROM demand2
WHERE STR_TO_DATE(ddate, '%d-%m-%Y') >= STR_TO_DATE('$dto', '%d-%m-%Y') AND STR_TO_DATE(ddate, '%d-%m-%Y') >= STR_TO_DATE('$dfrom', '%d-%m-%Y') AND !(mach='--' OR mach='-' OR mach='' OR mach='----' OR mach='-----' OR mach='---');
如果你想保留字段的VARCHAR类型而不是让任何运行时转换,那么你必须改变格式,以Y-M-d,所以用字符集的比较将工作同一个日期比较。
现在,你得到的29-12-2019的结果,因为29是1和30之间。
以上是关于MySQL查询显示结果超出范围的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 错误代码:1264。第 1 行的列 'columnname' 的值超出范围
查询在 MySQL 中有效,但不能通过 Lumen/Laravel - 数值超出范围:1416
SQL Server解惑——为什么你的查询结果超出了查询时间范围