|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Thursday, April 04, 2013 1:08 AM
Points: 10,
Visits: 33
|
|
| I have month field in format as JAN-12 with data type varchar. Now i wan to order by this field converting it into date like jun-12 then jul-12. Currently it orders like jul-12 then jun-12 as it is in varchar format. So how can this be achieved?
|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Tuesday, August 07, 2012 6:48 AM
Points: 14,
Visits: 20
|
|
You can add another column 'YearMonth' in which u should store values like '201201','201202'....
If u do this, u can sort month field easily
|
|
|
|
|
SSCarpal Tunnel
       
Group: General Forum Members
Last Login: Today @ 6:45 AM
Points: 4,804,
Visits: 8,068
|
|
|
|
|
|
SSChampion
        
Group: General Forum Members
Last Login: Today @ 3:06 PM
Points: 11,638,
Visits: 27,712
|
|
any solution is going to involve some sort of convert text to date , or a hard coded CASE statement int he order by.
can you fix the incoming data to return a datetime instead of the text version you are currently receiving?
this is a quick and dirty bandaid:
SELECT * FROM SOMETABLE ORDER BY CASE WHEN monthfield LIKE 'jan%' THEN 1 WHEN monthfield LIKE 'feb%' THEN 2 WHEN monthfield LIKE 'mar%' THEN 3 WHEN monthfield LIKE 'apr%' THEN 4 WHEN monthfield LIKE 'may%' THEN 5 WHEN monthfield LIKE 'jun%' THEN 6 WHEN monthfield LIKE 'jul%' THEN 7 WHEN monthfield LIKE 'aug%' THEN 8 WHEN monthfield LIKE 'sep%' THEN 9 WHEN monthfield LIKE 'oct%' THEN 10 WHEN monthfield LIKE 'nov%' THEN 11 WHEN monthfield LIKE 'dec%' THEN 12 ELSE 13 END,monthfield
Lowell
--There is no spoon, and there's no default ORDER BY in sql server either. Actually, Common Sense is so rare, it should be considered a Superpower. --my son
|
|
|
|
|
UDP Broadcaster
      
Group: General Forum Members
Last Login: Today @ 3:17 PM
Points: 1,456,
Visits: 14,261
|
|
USE [tempdb] GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[testmonths]') AND type in (N'U')) DROP TABLE [dbo].[testmonths] GO
CREATE TABLE [dbo].[testmonths]( [testMonth] [varchar](50) NULL ) ON [PRIMARY]
GO
INSERT INTO [dbo].[testmonths]([testMonth]) SELECT N'May-11' UNION ALL SELECT N'May-12' UNION ALL SELECT N'May-13' UNION ALL SELECT N'Jun-12' UNION ALL SELECT N'Jul-12' UNION ALL SELECT N'Aug-13' UNION ALL SELECT N'Jun-11' UNION ALL SELECT N'Jul-11' UNION ALL SELECT N'Aug-11' UNION ALL SELECT N'Aug-12' UNION ALL SELECT N'Jun-13' UNION ALL SELECT N'Jul-13'
SELECT testMonth FROM testmonths ORDER BY CONVERT( datetime , '01-' + testMonth );
__________________________________________________________________ you can lead a user to data....but you cannot make them think ! __________________________________________________________________
|
|
|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Thursday, April 04, 2013 1:08 AM
Points: 10,
Visits: 33
|
|
| Thnx... J Livingston SQL it did worked...
|
|
|
|
|
SSC Eights!
      
Group: General Forum Members
Last Login: Yesterday @ 4:17 AM
Points: 832,
Visits: 613
|
|
pls try below code declare @t1 table(id varchar(10)) insert into @t1(id)values('Jan-12'),('Feb-12'),('Mar-12'),('APR-12') select *,convert(date,convert(varchar(10),'01'+'-'+id)) new from @t1 order by 2
|
|
|
|