web-dev-qa-db-fra.com

Comment soustraire 30 jours de la date actuelle à l'aide de SQL Server

Je ne peux pas soustraire 30 jours de la date actuelle et je suis un débutant à SQL Server.

Ce sont les données dans ma colonne

date 
------------------------------
Fri, 14 Nov 2014 23:03:35 GMT
Mon, 03 Nov 2014 15:18:00 GMT
Tue, 11 Nov 2014 01:24:47 GMT
Thu, 06 Nov 2014 19:13:47 GMT
Tue, 04 Nov 2014 12:37:06 GMT
Fri, 1 Nov 2014 00:33:00 GMT
Sat, 5 Nov 2014 01:06:00 GMT
Sun, 16 Nov 2014 06:37:12 GMT

Pour créer la colonne ci-dessus, j’ai utilisé varchar(50) et, maintenant, mon problème est de vouloir afficher les dates des 15 à 20 derniers jours à partir de la colonne de date. mettre à jour [comment puis-je afficher les dates des 7 derniers jours dans l'ordre

41
Madpop

Vous pouvez le convertir en datetime, puis utiliser DATEADD(DAY, -30, date).

Voir ici .

modifier

Je suppose que beaucoup de gens trouvent cette question parce qu'ils veulent soustraire de la date actuelle (comme le titre de la question, mais pas ce que l'OP voulait avoir). Le commentaire de munyul ci-dessous répond plus précisément à cette question. Puisque les commentaires sont considérés comme éthérés (peuvent être supprimés à tout moment), je le répète ici:

DATEADD(DAY, -30, GETDATE())
95
HoneyBadger

Essaye ça:

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'

Jeu de résultats:

———————– —————
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
7
Muhammad Awais

ESSAYE ÇA:

Convertissez votre valeur VARCHAR en DATETIME et ajoutez -30 pour la soustraction. En outre, dans sql-server, le format ven 14 nov. 2014 23:03:35 GMT n'a pas été converti en DATETIME. Essayez la sous-chaîne pour cela:

SELECT DATEADD(dd, -30, 
       CAST(SUBSTRING ('Fri, 14 Nov 2014 23:03:35 GMT', 6, 21) 
       AS DATETIME))
7
Veera
SELECT DATEADD(day,-30,date) AS before30d 
FROM...

Mais il est fortement recommandé de conserver la date dans la colonne datetime et non varchar.

2
i486