2013-03-18 2 views
1

J'ai un champ de date que je voudrais retourner aux résultats où la date est moins une quantité donnée de jours. Par exemple, où @today - 30 me donnerait les 30 derniers jours de données. Comment puis-je faire ceci?Calcul des plages de dates dans T-SQL

+0

SQL Server ou Sybase? Dans SQL Server au moins, si '@ today' est une variable' datetime', alors 'SELECT * FROM dbo.SomeTable WHERE DateColumn> = @ today-30' peut réellement faire ce que vous voulez. Mais ce que vous essayez de faire n'est pas évident, veuillez donc donner plus de détails sur votre requête et sur votre objectif. – Pondlife

Répondre

0

Pour ce jour calcul plages vous pouvez utiliser: -

WHERE date_column BETWEEN date1 AND date2 

maintenant pour vous soustraire pouvez utiliser: -

DATEADD(DAY, -30, '9/1/2011') 

som ething comme: =

WHERE datecolumn BETWEEN dateAdd(day,-30,date1) AND date2 
+0

Ce que je cherche plus précisément, c'est aujourd'hui moins plusieurs ensembles de jours. 30days = today - 30, 60days = aujourd'hui - 60, 120days = today -120 ainsi de suite et ainsi de suite ... – tsqln00b

+0

Ainsi si vous créez une procédure stockée alors vous pouvez créer un paramètre d'entrée dites @days où vous passez les jours (30,60,120) et vous pouvez l'utiliser comme: - WHERE datecolumn BETWEEN dateAdd (jour, - @ jours, date1) ET date2 espoir que résout votre requête? –

0

Vous pouvez utiliser dateAdd. La syntaxe de day peut varier en fonction de votre SGBD

WHERE datecolumn BETWEEN dateAdd(day,-30,getDate()) AND getDate() 

ou

WHERE datecolumn > dateAdd(day,-30,getDate()) 
Questions connexes