March 2, 2015 at 3:55 pm
I have a 5.5 million row table that has the dateofbirth as a short date. The format looks like 1946-09-20.
I am trying to calculate the age using a SQL query but am having issues in SQL Server with errors. I have tried datediff and dateadd but nothing works.
March 2, 2015 at 3:58 pm
What is the column specification for the date?
MM
select geometry::STGeomFromWKB(0x0106000000020000000103000000010000000B0000001000000000000840000000000000003DD8CCCCCCCCCC0840000000000000003DD8CCCCCCCCCC08408014AE47E17AFC3F040000000000104000CDCCCCCCCCEC3F9C999999999913408014AE47E17AFC3F9C99999999991340000000000000003D0000000000001440000000000000003D000000000000144000000000000000400400000000001040000000000000F03F100000000000084000000000000000401000000000000840000000000000003D0103000000010000000B000000000000000000143D000000000000003D009E99999999B93F000000000000003D009E99999999B93F8014AE47E17AFC3F400000000000F03F00CDCCCCCCCCEC3FA06666666666FE3F8014AE47E17AFC3FA06666666666FE3F000000000000003D1800000000000040000000000000003D18000000000000400000000000000040400000000000F03F000000000000F03F000000000000143D0000000000000040000000000000143D000000000000003D, 0);
March 2, 2015 at 4:06 pm
Do you have errors in your calculations (getting incorrect age) or errors thrown by SQL Server that might come from incorrect data?
March 2, 2015 at 5:18 pm
You can use the function on the link below to calculate Age using @START_DATE = birthdate and @END_DATE = today.
Age Function F_AGE_IN_YEARS
March 3, 2015 at 8:25 am
It's been a while since I'd use or suggest a scalar function as a solution to a problem.
Instead, this should do it.
SELECT dob,
CASE WHEN DATEADD(YYYY, DATEDIFF(YYYY, dob, GETDATE()), dob) > GETDATE()
THEN DATEDIFF(YYYY, dob, GETDATE()) - 1
ELSE DATEDIFF(YYYY, dob, GETDATE())
END
FROM (VALUES(CAST('19851115' as date)), ('19850131'), ('19850302'), ('19840302'))x(dob) --Sample dates
Viewing 5 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply