2015-05-30 42 views
0

您好我有一個關於使用大於運算符時的日期不存儲在默認mysql格式的問題。我有一個數據庫,我用dd/mm/yyyy格式存儲日期。我試圖如何將它們存儲爲適當的MySQL格式,但過了一段時間後,我放棄了它。 現在我有一堆DD/MM/YYYY的日期表,我想選擇比選定日期使用大於運算符時存儲日期不存儲默認mysql格式

select * from table where date>'25/05/2015' 

更大當我這樣做的日期,​​我會得到這樣

結果
 date 
    27/05/2015 
    28/04/2015 

我做錯了什麼?我能做些什麼來解決它?

+0

您正在比較字符串。 –

+0

任何方式我可以得到這個工作? –

+0

查看STR_TO_DATE函數:https://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date –

回答

1

由於各種原因,最好將日期存儲爲MySQL DATE類型。兩個主要原因是:

  1. 您不必經常將字符串轉換爲日期進行比較。
  2. 如果您有很多記錄,並且您正在按日期進行定期搜索,則可以在日期字段中創建索引,然後您將獲得優化的搜索。如果將索引字符串字段與您的索引一樣,如果您正確格式化日期字符串,則會針對equals/not-equals進行優化,但不會針對範圍或大於/小於進行優化,因爲可以調用任何函數該字段將導致MySQL忽略該索引。

也就是說,如果你堅持使用當前格式,可以通過使用STR_TO_DATE函數將字符串轉換爲日期來進行比較。結果相比較而言,MySQL的日期文字:

SELECT * FROM table WHERE date > DATE '2015-05-25'; 

的日期在這個例子中的文字是ANSI標準,由MySQL和Oracle支持,但不是(至少現在還不是)由SQL Server。 MySQL也可以代表使用任何以下的字面日期:

  • '2015-05-25'
  • '20150525'
  • 20150525

有關日期和時間文字的更多信息,請參見here