2014-03-14 154 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

相關問題