如何訂購varchar字段與假定日期值: 例如:。如何使用假定的col值命令mysql varchar字段?
February 2014, April 2014, Q1 2014, Q2 2014
我需要假設Q1 =三月,Q2 = 10份責令領域日期明智的上升(或下降),
所以應該爲了這樣的:
February 2014, Q1 2014, April 2014, Q2 2014
如何訂購varchar字段與假定日期值: 例如:。如何使用假定的col值命令mysql varchar字段?
February 2014, April 2014, Q1 2014, Q2 2014
我需要假設Q1 =三月,Q2 = 10份責令領域日期明智的上升(或下降),
所以應該爲了這樣的:
February 2014, Q1 2014, April 2014, Q2 2014
CAST你VARCHAR值爲DATETIME值,那麼mysql ORDER BY asc/desc中的bulit將正常工作。如果您沒有一天將所有日期設置爲一個月的第一天。我不知道這些的Q值是但這是我所見過的任何日期格式,我敢肯定MySQL不會konw如何處理它要麼做。
既然你不似乎有其他選擇識別標準排序,你也許能夠通過情況/得到你想要的東西提供了結構化訂單時結構,如...你的宿舍是沒有意義的三月十月是超過3個月外...但是讓我們假設你金融歷開始於一月,三月所以是第一季度的最後一個月...
order by
case when YourField like 'Jan%' then '01'
when YourField like 'Feb%' then '02'
when YourField like 'Mar%' then '03a'
when YourField like 'Q1%' then '03b'
when YourField like 'Apr%' then '04'
when YourField like 'May%' then '05'
when YourField like 'Jun%' then '06a'
when YourField like 'Q2%' then '06b'
when YourField like 'Jul%' then '07'
when YourField like 'Aug%' then '08'
when YourField like 'Sep%' then '09a'
when YourField like 'Q3%' then '09b'
when YourField like 'Oct%' then '10'
when YourField like 'Nov%' then '11'
when YourField like 'Dec%' then '12a'
when YourField like 'Q4%' then '12b' end
但更有效的方式可能是有一個查詢什麼月份/季度的表格代表您想要的訂單......然後加入到此。我有「A」和「B」版本,因此,如果您的數據確實有兩三月和Q1項,三月份將首先上市,然後Q1。你不能只使用一個月的數字字面量,因爲Q總是會在最後排序,而不會給你你需要的東西。
另外,如果你的財務日曆不會在1月1日開始,那麼你的第一季度可能會開始如三月,四月,五月第一季度,鈞,七月,八月的第二季度,等等。
而且,我的情況下/排序時爲「01」,「02」,等等值,從而它們將總是「10」,「11」和「12」的條目之前。
我沒有DB在那裏我可以測試這個,我也不有MySQL的安裝,以便把這個作爲不是正好語法正確的解決更多的僞代碼,但你可能想嘗試這樣的事情......
SELECT *, CAST((CASE
WHEN CONTAINS(dateField, 'Q1') THEN 'March' + SUBSTRING(dateField)
WHEN CONTAINS(dateField, 'Q2') THEN 'October' + SUBSTRING(dateField)
ETC...
ELSE datefield) AS DATETIME) as Date1
FROM mytable
ORDER BY Date1
存儲在一個單一的行/列所有這些數據?或者是多行?你的問題並不完全清楚。 – Taryn 2014-10-20 17:22:10
行/列中沒有人值,例如:'2014年2月' – Rijo 2014-10-20 17:23:50
2014年2月,2014年4月,2014年第1季度,2014年第2季度是varchar列字段的4個不同值 – Rijo 2014-10-20 17:28:17