嗨,大家好,我只是試圖從我的數據庫中提取所有記錄,其中rec_date(varchar)存儲爲m/d/Y並且已過期(如小於curdate()
),這個電話並沒有給我我想要的東西:MySQL DATE_FORMAT與CURDATE()查詢的比較
SELECT member_id,
status,
DATE_FORMAT(STR_TO_DATE(rec_date, '%m/%d/%Y'), '%Y-%m-%d') AS rec
FROM members
WHERE rec_date > CURDATE()
AND status = '1'
我明顯做錯了事,你能幫忙嗎?
是的,這會做...我知道我非常想保存這下「日期「類型,但我不能控制這個不幸的事情,並且必須與我所給予的一致。我知道,糟糕,但嘿。 再次感謝。 – 2010-03-15 04:30:05
你爲什麼需要在子查詢中?可怕的解決方案。爲什麼不按照我的建議在WHERE中使用STR_TO_DATE(m.rec_date,'%m /%d /%Y')? – zerkms 2010-03-15 05:17:20
這個子查詢將比全查詢的查詢要糟糕得多。因爲一旦子查詢結果在內存中創建並且不適合 - 它將成爲光盤上的臨時表,寫入並在之後進行查找,以用於外部查詢。你可以用EXPLAIN來檢查它;-) 實際上,你將得到相同的查詢計劃,但有一個步驟,這也將是fullscan。 – zerkms 2010-03-15 05:52:30