我想在MySQL如何在mySQL查詢中選擇日期相等?
SELECT * from TABLENAME WHERE FROM_DATE='06/11/2012'
我沒有得到任何有用的東西來選擇定記錄的特定日期錶行。
我想在MySQL如何在mySQL查詢中選擇日期相等?
SELECT * from TABLENAME WHERE FROM_DATE='06/11/2012'
我沒有得到任何有用的東西來選擇定記錄的特定日期錶行。
首先,你應該使用標準的日期格式Y-m-d
- 否則你必須做一些討厭的查詢和排序是一個真正的b * tch。
使用標準的日期格式,你可以很容易地做這樣的事情:
SELECT * FROM tablename WHERE from_date > '2012-06-11'
,如果你使用mysql的DATE()
功能會更好
SELECT * FROM tablename WHERE DATE(from_date) > '2012-06-11'
因爲,如果數據類型您設置爲TIMESTAMP或DATETIME的from_date,那麼當您直接使用'>'符號時,它不會返回正確的結果
真正的'date()'會截斷任何時間值。但是它也可能會阻止數據庫使用該列上的索引。奧利的解決方案是可取的,因爲它是索引友好。 – Leigh
DATE
比較很可能是你想要的。如果您FROM_DATE列有DATE
數據類型,那麼如果你這樣做你的代碼應該是安全可靠:
WHERE from_date = STR_TO_DATE('06/11/2012', '%m/%d/%Y')
@Repox指出,你可能會考慮把你的日期文字的規範格式「2012- 06-11' 。這是真的,如果你能做到的話。但是,如果您需要,STR_TO_DATE將爲您完成。這裏有%x轉換項目的列表。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
如果您使用的是DATETIME
數據類型,請注意:比較比看起來更復雜。 DATETIME
項目就像浮點數字:如果其中一個恰好等於另一個,它只是巧合。這是因爲它們代表了時間(毫秒),而不僅僅是幾天。
意味着你的FROM_DATE列有DATETIME
類型,你應該使用
WHERE from_date >= STR_TO_DATE('06/11/2012', '%m/%d/%Y')
AND from_date < STR_TO_DATE('06/11/2012', '%m/%d/%Y') + INTERVAL 1 DAY
這將捕獲所有的時刻在時間上你想要的日子,直到但不包括第二天的第一刻。
如果from_date項表示爲字符串,請將其轉換爲DATE
或DATETIME
數據類型。認真。你的結果會好得多。
SELECT * from TABLENAME WHERE FROM_DATE='2012/06/13'
...問題是?你的問題是哪一個? – Marco
SELECT ... WHERE FROM_DATE> ='...'可能是您要求的,但您的問題很不明確...... – Argeman
FROM_DATE是varchar或日期字段嗎? – MrCode