这是我的表格,以字符串格式选择日期
----------
SaleDate
----------
Jan 14
Feb 14
Mar 14
Nov 13
Dec 13
---------
并且,我希望这些选中的顺序应为升序,
----------
SaleDate
----------
Nov 13
Dec 13
Jan 14
Feb 14
Mar 14
---------
我怎么能以有序的方式获得约会,请帮助我。
答案 0 :(得分:2)
强烈建议不要将日期值存储为varchar值。 反正
select * from dateTable
order by cast(('01 '+ saleDate) as datetime) asc
答案 1 :(得分:0)
一种可能的选择是按顺序使用案例
CREATE TABLE Table1
([SaleDate] varchar(10))
;
INSERT INTO Table1
([SaleDate])
VALUES
('Jan 14'),
('Feb 14'),
('Mar 14'),
('Nov 13'),
('Dec 13');
select * from table1
Order by
cast(substring(saledate,5,2) as int),
case
when substring(saledate,1,3)='Jan' then 1
when substring(saledate,1,3)='Feb' then 2
when substring(saledate,1,3)='Mar' then 3
when substring(saledate,1,3)='Apr' then 4
when substring(saledate,1,3)='May' then 5
when substring(saledate,1,3)='Jun' then 6
when substring(saledate,1,3)='Jul' then 7
when substring(saledate,1,3)='Aug' then 8
when substring(saledate,1,3)='Sep' then 9
when substring(saledate,1,3)='Oct' then 10
when substring(saledate,1,3)='Nov' then 11
when substring(saledate,1,3)='Dec' then 12
end
答案 2 :(得分:0)
使用以下查询
select a.SaleDate from (
select SaleDate
,Case WHEN substring(SaleDate,1,3) = 'JAN' THEN 1
WHEN substring(SaleDate,1,3) = 'FEB' THEN 2
WHEN substring(SaleDate,1,3) = 'MAR' THEN 3
WHEN substring(SaleDate,1,3) = 'APR' THEN 4
WHEN substring(SaleDate,1,3) = 'MAY' THEN 5
WHEN substring(SaleDate,1,3) = 'JUN' THEN 6
WHEN substring(SaleDate,1,3) = 'JUL' THEN 7
WHEN substring(SaleDate,1,3) = 'AUG' THEN 8
WHEN substring(SaleDate,1,3) = 'SEP' THEN 9
WHEN substring(SaleDate,1,3) = 'OCT' THEN 10
WHEN substring(SaleDate,1,3) = 'NOV' THEN 11
WHEN substring(SaleDate,1,3) = 'DEC' THEN 12 END AS MON
, Substring(SaleDate,len(SaleDate)-2,len(SaleDate)) AS YEAR1
from Table1
) a order by YEAR1,MON