2014-03-14 116 views
-1

如何在MySQL中将当前日期与给定日期进行比较我正在使用类似于该代码的方法,但它不起作用。如何将当前日期与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 
    %> 
+0

看看答案请... – jmail

回答

0

您可以像

DATE(NOW()) = DATE(duedate) 

比较一下会比较只有日期部分。

0

你应该试试这个简单的代码ASL:

SELECT * FROM myTable WHERE DATE(myDate) = DATE(NOW()) 
+0

始终会导致全表扫描,即使在'myDate' – Kaii

+0

我要投票了,但我没有得到该怎么办 –

0

DATE_FORMAT()

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

请注意,我插在你OR条件括号,因为我觉得这其实是你打算查询: 。

+0

虽然看起来比解决方案更复杂的INDEX在其他答案中,这种查询方法可以更快 - 因为MySQL可能能够执行基于INDEX的查找。在这种特殊情况下/在您的查询中,'LIKE'%username%“'已经强制进行全表扫描,所以您不会注意到任何区别。 – Kaii

+0

如何选择小于等于当前日期当我使用像<=但只显示小于值只显示不等于 –

+0

@DeepakSingh选择具有特定范围内的日期的行,你应该真的改变你的表定义并将这些字段转换为真正的'DATE'数据类型。如果你这样做,你可以查询这样的事情:'WHERE mydate BEFORE'2014-03-17''或'WHERE mydate BETWEEN'2014-03-01'AND'2014-03-31'' – Kaii

相关问题