例如,我們有像日期:挑選出日期在MySQL
04/04/2017
12/12/2016
03/04/2016
你怎麼可以訂購,這將導致該日期:
11/12/2016
03/04/2016
12/04/2017
ORDER BY ASC/DESC
不起作用。請幫忙。
順便說一句我有他們的藥物到期日的數據。我只想讓我的listview中的第一個數據成爲第一個到期的藥物。
例如,我們有像日期:挑選出日期在MySQL
04/04/2017
12/12/2016
03/04/2016
你怎麼可以訂購,這將導致該日期:
11/12/2016
03/04/2016
12/04/2017
ORDER BY ASC/DESC
不起作用。請幫忙。
順便說一句我有他們的藥物到期日的數據。我只想讓我的listview中的第一個數據成爲第一個到期的藥物。
如果使用此function:
STR_TO_DATE('04-04-2017', '%d/%m/%Y')
你會轉換您的包含日期的varchar轉換爲DATE數據類型。這些排序正確。
所以,
ORDER BY STR_TO_DATE(expireation_date_column, '%d/%m/%Y') NULLS FIRST
會給你一個有用的排序。 NULLS FIRST
部分將向您顯示格式不正確的日期,如果您有任何排序的頂部的行。
如果這是一個大項目,將這些過期日期轉換爲DATE數據類型時,將它們插入表格中可能是明智的。這樣,您就可以獲得各種好處,包括使用索引搜索這些日期的功能。
試試這個:
ORDER BY STR_TO_DATE(your_date_column, '%d/%m/%Y')
您的日期格式保存爲varchar DD/MM/YYYY
當然使用DateTime數據類型而不是Varchar是最好的解決方案嗎?
與日期時間轉換Varchar相比,您將在索引的DateTime列上得到更有效的查詢計劃排序。
這也可以防止無效的日期被存儲,這可能與Varchar。
如果您在列上查詢,索引日期時間列也將有所幫助。
一切對我而言都是新鮮的。但是我又解決了這個問題。在我將它轉換爲varchar之前,我的問題是日期時間選擇器的格式與mysql日期類型不兼容。 –
這不應該規定你的數據庫設計 - 這是不好的做法。您應該將日期選擇器中的值轉換爲插入記錄時Mysql接受的DateTime格式。 – Jack
它沒有被訂購:2016/11/12 03/04/2016 12/04/2017和你的日期字段的類型是什麼? –
varchar。我認爲這是我的問題。 –