[英]Ordering a mysql table by date when the column is declared varchar
我需要按日期對表進行排序(降序),但是表中的所有列都是varchar
,因此我需要即時操作數據以正確地對其進行排序。
date sales
10/09/2014 100
13/09/2014 250
30/08/2014 200
在不更改表格的情況下有可能嗎? 因此結果將如下所示,最新日期在前?
date sales
13/09/2014 250
10/09/2014 100
30/08/2014 200
像偽代碼
SELECT * FROM table ORDER BY (CONCAT(REGEXP(date, '[0-9]{4}'),
REGEXP(date, '/[0-9]{2}/'), REGEXP(date, '^[0-9]{4}/')) DESC
我想我需要以某種方式使用substring_index
,因為regexp
只會返回1或0,而不是找到的實際值。
您需要將varchar
存儲的日期對象轉換為DATE
對象,然后使用它們進行排序。
您可以像這樣即時進行
ORDER BY STR_TO_DATE(date,'%d/%m/%Y') DESC
但是性能將是可怕的。 為了獲得最佳結果,請將您的日期存儲在表的DATE
列中。
您可以使用STR_TO_DATE
SELECT *
FROM Table1
ORDER BY STR_TO_DATE(date, '%d/%m/%Y') desc,
sales desc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.