Click here to Skip to main content
15,890,438 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hello

I wants List Of Employee Orderby Upcoming Birthdate

Suppose Today is 12-08-2015 , Then Employee wants in this Order

EmpName BDate
Anita	18-08-1988 
Mitali	28-08-1991 
Mit	04-09-1990 
Neel  04-04-2000 
Meet 10-05-1988 
Neel 22-07-2000



I have Try This

SQL
SELECT     BDATE AS BIRTHDAY, DATEDIFF(YEAR, BDATE, GETDATE()) AS AGE, DATEADD(YEAR, DATEDIFF(YEAR, BDATE, GETDATE()), BDATE) AS AddAgeInBdate,
                      DATEDIFF(DAY, GETDATE(), DATEADD(YEAR, DATEDIFF(YEAR, BDATE, GETDATE()), BDATE)) AS NoOfDaysForBdate
FROM         EMP
ORDER BY AddAgeInBdate
Posted
Updated 11-Aug-15 21:16pm
v3

Seems you forgot about WHERE statement:

SQL
SELECT *
FROM (
SELECT BDATE AS BIRTHDAY, DATEDIFF(YEAR, BDATE, GETDATE()) AS AGE,
    DATEADD(YEAR, DATEDIFF(YEAR, BDATE, GETDATE()), BDATE) AS AddAgeInBdate,
    DATEDIFF(DAY, GETDATE(), DATEADD(YEAR, DATEDIFF(YEAR, BDATE, GETDATE()), BDATE)) AS NoOfDaysForBdate
FROM EMP
) AS A
WHERE AddAgeInBdate>=GETDATE()
ORDER BY AddAgeInBdate


As per OP's comments:
SQL
SELECT *
FROM (
	SELECT BDATE AS BIRTHDAY, DATEDIFF(YEAR, BDATE, GETDATE()) AS AGE,
		DATEADD(YEAR, DATEDIFF(YEAR, BDATE, GETDATE()), BDATE) AS AddAgeInBdate,
		DATEDIFF(DAY, GETDATE(), DATEADD(YEAR, DATEDIFF(YEAR, BDATE, GETDATE()), BDATE)) AS NoOfDaysForBdate
	FROM EMP 
) AS A
ORDER BY CASE WHEN AddAgeInBdate>=GETDATE() THEN 0 ELSE 1 END ASC, AddAgeInBdate


Result:
1988-08-18 00:00:00.000 27  2015-08-18 00:00:00.000 6
1991-08-28 00:00:00.000 24  2015-08-28 00:00:00.000 16
1990-09-04 00:00:00.000 25  2015-09-04 00:00:00.000 23
2000-04-04 00:00:00.000 15  2015-04-04 00:00:00.000 -130
1988-05-10 00:00:00.000 27  2015-05-10 00:00:00.000 -94
2000-07-22 00:00:00.000 15  2015-07-22 00:00:00.000 -21
 
Share this answer
 
v4
Comments
rups.seth 12-Aug-15 4:15am    
Thanks For Reply

But i wants to list all Employee
Read Again
Maciej Los 12-Aug-15 4:26am    
I had read your question carefully. I though that you want to list employees with upcoming birthday and order them on this date. But, if you want to list all employess and sort them on upcomming birthday, please see my updated solution.
rups.seth 12-Aug-15 7:29am    
Thank you so much for try , But Still I didn't get what I want

plz see the Date Only , now 8th Month Going On So Month will be in Order like
(8 ,9 10 ,11 , 12 then 1,2,3,4....12th month)

I want date 04-04-2000 After 04-09-1990 As Per following Details

Anita 18-08-1988
Mitali 28-08-1991
Mit 04-09-1990
Neel 04-04-2000
Meet 10-05-1988
Neel 22-07-2000


hope u got it.
Maciej Los 12-Aug-15 7:49am    
I got it earlier ;) I forgot to add AddAgeInBdate field into ORDER BY instruction. See updated answer.
rups.seth 12-Aug-15 8:42am    
Thank you So much :)
you can achieve below query

SELECT 
  BDATE AS BIRTHDAY,[Name],
  DATEDIFF(YEAR, BDATE, GETDATE()) AS AGE,
  DATEDIFF(DAY, GETDATE(), DATEADD(YEAR, DATEDIFF(YEAR, BDATE, GETDATE()), BDATE)) AS NoOfDaysForBdate
 --FLOOR(DATEDIFF(dd,BDATE,GETDATE()) / 365.25) AS AGE_NOW
FROM 
  TestDateData
WHERE 1 = (FLOOR(DATEDIFF(dd,BDATE,GETDATE()+365) / 365.25))
          -
          (FLOOR(DATEDIFF(dd,BDATE,GETDATE()) / 365.25))
 
Share this answer
 
v5
Comments
rups.seth 12-Aug-15 4:00am    
I wants output Like Follow

EmpName BDate
======================
Anita 18-08-1988
Mitali 28-08-1991
Mit 04-09-1990
Neel 04-04-2000
Meet 10-05-1988
Neel 22-07-2000
Suket shah 12-Aug-15 4:27am    
above code is same like that you can check. remove whatever column you don't require
Suket shah 12-Aug-15 4:27am    
SELECT
BDATE AS BIRTHDAY,[Name]
FROM
TestDateData
WHERE 1 = (FLOOR(DATEDIFF(dd,BDATE,GETDATE()+365) / 365.25))
-
(FLOOR(DATEDIFF(dd,BDATE,GETDATE()) / 365.25))
rups.seth 12-Aug-15 7:25am    
column not the issue
plz see the Date Only , now 8th Month Going On So Month will be in Order like
(8 ,9 10 ,11 , 12 then 1,2,3,4....12th month)

I want date 04-04-2000 After 04-09-1990 As Per following Details

Anita 18-08-1988
Mitali 28-08-1991
Mit 04-09-1990
Neel 04-04-2000
Meet 10-05-1988
Neel 22-07-2000


hope u got it.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900