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
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())
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
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))
SELECT DATEADD(day,-30,date) AS before30d
FROM...
Mais il est fortement recommandé de conserver la date dans la colonne datetime et non varchar.