簡體   English   中英

當列被聲明為varchar時按日期排序mysql表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM