Difference of SQL days

0

I have the following problem, I want you to show me in a column how many days are left until my next birthday.

I already tried the following functions DATEDIFF and DATEADD

I leave you my sentence that would be missing add this column:

select dc.fecha_nacimiento as cumple from datos_cliente dc
    
asked by Dieguito Weed 02.10.2018 в 21:36
source

1 answer

0

Perform the test and it worked for you to see:

--OBTENGO LA DIFERENCIA DE AÑOS DESDE LA FECHA INDICADA A LA FECHA ACTUAL
SELECT DATEDIFF(YEAR, '1994-07-08', GETDATE())

--AÑADO LA CANTIDAD DE AÑOS OBTENIDA EN EL PASO ANTERIOR
SELECT DATEADD(YEAR, DATEDIFF(YEAR, '1994-07-08', GETDATE()), '1994-07-08')

--SI LA FECHA OBTENIDA ES MENOR A LA FECHA ACTUAL DEVUELVO 1 PARA SUMAR UN AÑO MÁS
SELECT CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, '1994-07-08', GETDATE()), '1994-07-08') < GETDATE() THEN 1 ELSE 0 END

--FECHA FINAL DEL PROXIMO CUMPLEAÑOS
SELECT DATEADD(YEAR, DATEDIFF(YEAR, '1994-07-08', GETDATE()) + CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, '1994-07-08', GETDATE()), '1994-07-08') < GETDATE() THEN 1 ELSE 0 END, '1994-07-08')

--OBTENGO LA DIFERENCIA EN DÍAS DESDE LA FECHA ACTUAL A LA FECHA FINAL OBTENIDA DEL PRÓXIMO CUMPLEAÑOS
SELECT DATEDIFF(DAY, GETDATE(), DATEADD(YEAR, DATEDIFF(YEAR, '1994-07-08', GETDATE()) + CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, '1994-07-08', GETDATE()), '1994-07-08') < GETDATE() THEN 1 ELSE 0 END, '1994-07-08'))

--TU CASO
SELECT DATEDIFF(DAY, GETDATE(), DATEADD(YEAR, DATEDIFF(YEAR, dc.fecha_nacimiento, GETDATE()) + CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, dc.fecha_nacimiento, GETDATE()), dc.fecha_nacimiento) < GETDATE() THEN 1 ELSE 0 END, dc.fecha_nacimiento)) AS cumple FROM datos_cliente dc

This is the source .

    
answered by 02.10.2018 в 21:54