Calculate Years,Months and days from DOB

  1. DECLARE @DOB DATE = '1988-08-01', @CurrentDate DATETIME = GETDATE(), @Years INT, @Months INT, @Days INT, @tmpFromDate DATE  
  2. IF(@DOB>@CurrentDate )  
  3. BEGIN  
  4. PRINT 'DATE OF BIRTH SHOULD NOT BE GREATER THAN CURRENT DATE';  
  5. END  
  6. ELSE  
  7. BEGIN  
  8. SET @Years = DATEDIFF(YEAR, @DOB, @CurrentDate) - (CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, @DOB, @CurrentDate), @DOB) > @CurrentDate THEN 1 ELSE 0 END)  
  9. SET @tmpFromDate = DATEADD(YEAR, @Years , @DOB)  
  10. SET @Months = DATEDIFF(MONTH, @tmpFromDate, @CurrentDate) - (CASE WHEN DATEADD(MONTH,DATEDIFF(MONTH, @tmpFromDate, @CurrentDate),  
  11. @tmpFromDate) > @CurrentDate THEN 1 ELSE 0 END)  
  12. SET @tmpFromDate = DATEADD(MONTH, @Months , @tmpFromDate)  
  13. SET @Days = DATEDIFF(DAY, @tmpFromDate, @CurrentDate) - (CASE WHEN DATEADD(DAY, DATEDIFF(DAY, @tmpFromDate, @CurrentDate),  
  14. @tmpFromDate) > @CurrentDate THEN 1 ELSE 0 END)  
  15. SELECT @Years AS [Year(s)], @Months AS [Month(s)], @Days [Day(s)]  
  16. END