Saltar al contenido

Cómo restar 30 días de la fecha actual usando SQL Server

Si hallas algún problema en tu código o proyecto, recuerda probar siempre en un entorno de testing antes subir el código al trabajo final.

Solución:

Puedes convertirlo a datetimey luego usar DATEADD(DAY, -30, date).

Mira aquí.

editar

Sospecho que muchas personas están encontrando esta pregunta porque quieren restar de la fecha actual (como es el título de la pregunta, pero no lo que OP pretendía). El comentario de munyul a continuación responde esa pregunta más específicamente. Dado que los comentarios se consideran etéreos (pueden eliminarse en cualquier momento), lo repetiré aquí:

DATEADD(DAY, -30, GETDATE())

PRUEBA ESTO:

Transmita su valor VARCHAR a DATETIME y agregue -30 para la resta. Además, en sql-server el formato viernes, 14 de noviembre de 2014 23:03:35 GMT no se convirtió a DATETIME. Pruebe la subcadena para ello:

SELECT DATEADD(dd, -30, 
       CAST(SUBSTRING ('Fri, 14 Nov 2014 23:03:35 GMT', 6, 21) 
       AS DATETIME))

Prueba esto:

SELECT      GETDATE(), 'Today'
UNION ALL
SELECT      DATEADD(DAY,  10, GETDATE()), '10 Days Later'
UNION ALL
SELECT      DATEADD(DAY, –10, GETDATE()), '10 Days Earlier'
UNION ALL
SELECT      DATEADD(MONTH,  1, GETDATE()), 'Next Month'
UNION ALL
SELECT      DATEADD(MONTH, –1, GETDATE()), 'Previous Month'
UNION ALL
SELECT      DATEADD(YEAR,  1, GETDATE()), 'Next Year'
UNION ALL
SELECT      DATEADD(YEAR, –1, GETDATE()), 'Previous Year'

Conjunto resultante:

———————– —————
2011-05-20 21:11:42.390 Today
2011-05-30 21:11:42.390 10 Days Later
2011-05-10 21:11:42.390 10 Days Earlier
2011-06-20 21:11:42.390 Next Month
2011-04-20 21:11:42.390 Previous Month
2012-05-20 21:11:42.390 Next Year
2010-05-20 21:11:42.390 Previous Year

Aquí tienes las reseñas y valoraciones

Tienes la opción de añadir valor a nuestro contenido informacional cooperando tu experiencia en las explicaciones.

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



Utiliza Nuestro Buscador

Deja una respuesta

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