Saltar al contenido

SQL Restar exactamente un año

Solución:

Utilizar esta:

dateadd(year, -1, getdate())

Según su comentario sobre los valores de año codificados de forma rígida, el uso de

 DATEDIFF(year,BOOKED,GETDATE())

para obtener el número de años desde la fecha que buscas, con suerte debería llevarte en la dirección que buscas.

Probablemente terminará con algo como:

SELECT DATEADD(year, -DATEDIFF(year,BOOKED,GETDATE()), GETDATE())

Ok, parece más bien que todo lo que realmente quieres hacer (puede que me equivoque, lo siento si es así) es agrupar las reservas por año.

¿El resultado de lo siguiente ayudará a lograrlo?

SELECT SDESCR,DATEADD(YEAR, DATEDIFF(YEAR, 0, BOOKED),0), Sum(APRICE) as Total, Sum(PARTY) as PAX
FROM  DataWarehouse.dbo.B01Bookings AS B101Bookings
GROUP BY SDESCR,DATEADD(YEAR, DATEDIFF(YEAR, 0, BOOKED),0)

Como dije, esto es una suposición de su objetivo, no necesariamente una respuesta a su pregunta.

Para restar un año de una fecha, simplemente use la función DATEADD ()

SELECT DATEADD(year, -1, GETDATE())

Editado:

SELECT SDESCR,DYYYY, Sum(APRICE) as Total, Sum(PARTY) as PAX
FROM  DataWarehouse.dbo.B01Bookings AS B101Bookings
WHERE 
(BOOKED <= Convert(int, Convert(datetime, Convert(varchar, DatePart(month, GETDATE())) + "https://foroayuda.es/" + Convert(varchar, DatePart(day, GetDate())) + "https://foroayuda.es/" + DYYYY))
Group By SDESCR,DYYYY
Order by DYYYY

Editado 2:

Acabo de ejecutar esta declaración

select  Convert(datetime, Convert(varchar, DatePart(month, GETDATE())) + "https://foroayuda.es/" + Convert(varchar, DatePart(day, GetDate())) + "https://foroayuda.es/" + '2007')

Que funciona bien. entonces mi pregunta es ¿qué se almacena en la columna DYYYY? ¿Siempre contiene un año válido, puede contener nulos?

¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *