2012-10-04 158 views
0

我有一个数据库作为附加,其中我有一个BirthDate列分为BirthYear,BirthMonth和BirthDayNumber。SQL查询问题与日期

Database Image

如。对于生日:

Wednesday, May 10, 1899 

BirthYear:1899 
BirthMonth : 5 
BirthDayNumber :10 

我想以下列格式的数据库进行排序(月份和日期应该是按升序排列的情况下,如果月份和日期是相等的,那么它应该在今年以降序排列)

01 January 2011 
02 January 2012 
02 January 2008 
05 August 2012 
06 September 2001 
12 December 1899 

你能帮我解决这个问题吗?

+2

您正在使用哪个数据库管理系统? – Vikdor

+0

BirthMonth ASC,BirthDay ASC或OrderYear DESC这是你想要的吗? –

+0

我正在使用sqlite,因为我必须将其连接到iphone应用程序。在BirthMonth ASC,BirthDay ASC或OrderYear DESC我正在按年份排序。只有在月份和日期相等的情况下才应该考虑年份。 – ZealDeveloper

回答

1

想这样的作品

SQLFiddle

使用此代码

SELECT birthdate FROM testdate 
ORDER BY 
BirthDayNumber ASC, BirthMonth ASC, BirthYear Desc 
0

尝试

SELECT * FROM `tblename` order by BirthYear DESC, BirthMonth ASC,BirthDayNumber ASC 

感谢

0

请尝试查询尝试类似的东西:

SELECT ROW_NUMBER() OVER (PARTITION BY DT ORDER BY YE DESC, MO ASC, DT ASC) AS NR, DT, MO, YE FROM SOMEDATA 
+0

我已经试过这个,但是我必须考虑这一年,只有当日和月相等。我这种情况下,我得到: 02月2012 2012年8月5日 2011年1月1日 2008年1月2日 2001年9月6日 1899年12月12日 但我需要的输出,如: 2011年1月1日 02 2012年1月 02一月2008 05八月2012 06九月2001 1899年12月12日 – ZealDeveloper

0

下面给出这个

SELECT * FROM TABLE ORDER BY BirthYear DESC, BirthDayNumber ASC, BirthMonth ASC 
0

试试这个

SELECT CONCAT(BirthDayNumber,' ', MonthName(CONCAT('1900-',CONVERT(BirthMonth,char(2)),'-1')), ' ', Birthyear) 
FROM table 
ORDER BY BirthMonth ASC, BirthDay ASC, BirthYear DESC 
0
SELECT birthdate FROM testdate 
ORDER BY 
BirthMonth ASC,BirthDayNumber ASC, BirthYear Desc