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 datetime
y 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.