如何在MySQL中比较当前日期和给定日期
如何将MySQL中的当前日期与给定日期进行比较我正在使用类似的代码,但它不起作用如何在MySQL中比较当前日期和给定日期,sql,jsp,Sql,Jsp,如何将MySQL中的当前日期与给定日期进行比较我正在使用类似的代码,但它不起作用 <% rs=st.executeQuery("select approcode,approemail,appromon,approvemon,approtue,approvetue,approwed,approvewed,approthr,approvethr,approfri,approvefri,approsat,approvesat,commen,months,SUM(nol) from `
<%
rs=st.executeQuery("select approcode,approemail,appromon,approvemon,approtue,approvetue,approwed,approvewed,approthr,approvethr,approfri,approvefri,approsat,approvesat,commen,months,SUM(nol) from `pushkalit`.`approval`WHERE (CONVERT( `approcode` USING utf8 ) LIKE '%"+user+"%') AND appromon=DATE(now()) OR approtue=DATE(now()) OR approwed=DATE(now()) ");
// i have given in mysql, appromon varchar(30).....so on dateformat have dd/MM/yyyy
%>
您可以像
DATE(NOW()) = DATE(duedate)
将只比较日期部分。您应该尝试以下方法来编写简单的asL代码:
SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW())
看
请注意,我在您的
或
条件周围插入了括号,因为我认为这实际上是您想要查询的内容。请查看答案…始终会导致完整表扫描,即使myDate
上有索引,但看起来比其他答案中的解决方案更复杂,这种查询方法可以快得多——因为MySQL可以进行基于索引的查找。在这种特殊情况下/在您的查询中,如“%username%”
已经在强制进行全表扫描,因此您不会注意到任何差异。当我使用LIKE that@DeepakSingh选择日期在特定范围内的行时,如何选择小于或等于当前日期,您应该真正更改表定义,并将这些字段转换为真正的DATE
数据类型。如果您这样做,您可以查询以下内容:我的日期在'2014-03-17'之前的位置
或我的日期在'2014-03-01'和'2014-03-31'之间的位置
@DeepakSingh PS:欢迎使用StackOverflow。如果你觉得这个或另一个答案有帮助,请投票表决并接受它作为解决方案。请阅读@DeepakSingh请阅读-这里都有解释。在答案旁边,您可以找到向上和向下按钮(以及复选标记)。你可以用这些来投票。复选标记接受答案作为解决方案。
SELECT
approcode, approemail, appromon, approvemon, approtue,approvetue, approwed, approvewed, approthr, approvethr, approfri, approvefri, approsat, approvesat, commen, months, SUM(nol)
FROM `pushkalit`.`approval`
WHERE (CONVERT(`approcode` USING utf8) LIKE '%"+user+"%')
AND ( appromon = DATE_FORMAT(NOW(), "%d/%m/%Y")
OR approtue = DATE_FORMAT(NOW(), "%d/%m/%Y")
OR approwed = DATE_FORMAT(NOW(), "%d/%m/%Y") )