Skip to content

Instantly share code, notes, and snippets.

@eldenis
Created September 8, 2018 20:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eldenis/6c69b473a808673aee019dfa55bf88ce to your computer and use it in GitHub Desktop.
Save eldenis/6c69b473a808673aee019dfa55bf88ce to your computer and use it in GitHub Desktop.
MS SQL Server function to get a string in natural language with a person's age (newborns to elderly).
CREATE FUNCTION [dbo].[Getagestring] (@birth_date datetime)
RETURNS varchar(80)
AS
BEGIN
DECLARE @age int
SELECT
@age = DATEDIFF(yy, @birth_date, GETDATE()) - CASE
WHEN
DATEADD(yy, DATEDIFF(yy,
@birth_date, GETDATE()
), @birth_date) > GETDATE(
) THEN 1
ELSE 0
END
DECLARE @meses int
SELECT
@meses = DATEDIFF(mm, @birth_date, GETDATE()) - CASE
WHEN
DATEADD(mm, DATEDIFF(mm,
@birth_date,
GETDATE()
), @birth_date) >
GETDATE(
) THEN 1
ELSE 0
END
IF @age >= 18
RETURN CAST(@age AS varchar) + ' Years'
IF @age >= 2
BEGIN
DECLARE @mesesParciales int
SELECT
@mesesParciales = (DATEDIFF(mm, @birth_date, GETDATE())
- CASE
WHEN
DATEADD(mm, DATEDIFF(mm,
@birth_date, GETDATE
()
), @birth_date) >
GETDATE(
) THEN 1
ELSE 0
END
) %
12
RETURN CAST(@age AS varchar) + ' Years '
+ CAST(@mesesParciales AS varchar)
+ ' Months'
END
IF @meses >= 4
BEGIN
RETURN CAST(@meses AS varchar) + ' Months'
END
DECLARE @dias int
SELECT
@dias = DATEDIFF(dd, @birth_date, GETDATE()) - CASE
WHEN
DATEADD(dd, DATEDIFF(dd,
@birth_date, GETDATE()
), @birth_date) > GETDATE(
) THEN 1
ELSE 0
END
IF @dias >= 28
BEGIN
DECLARE @semanas int
SELECT
@semanas = DATEDIFF(ww, @birth_date, GETDATE()) - CASE
WHEN
DATEADD(ww,
DATEDIFF(ww,
@birth_date, GETDATE()
), @birth_date) >
GETDATE(
) THEN 1
ELSE 0
END
RETURN CAST(@semanas AS varchar) + ' Weeks'
END
IF @dias >= 5
BEGIN
RETURN CAST(@dias AS varchar) + ' Days'
END
DECLARE @horas int
SELECT
@horas = DATEDIFF(hh, @birth_date, GETDATE()) - CASE
WHEN
DATEADD(hh, DATEDIFF(hh,
@birth_date,
GETDATE()
), @birth_date) >
GETDATE(
) THEN 1
ELSE 0
END
RETURN CAST(@horas AS varchar) + ' Hours'
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment