如何在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 `

如何将MySQL中的当前日期与给定日期进行比较我正在使用类似的代码,但它不起作用

  <%
    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") )