web-dev-qa-db-fra.com

Comment sélectionner les données à partir de 30 jours?

J'ai une requête:

SELECT name
FROM (
SELECT name FROM 
Hist_answer
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
UNION ALL
SELECT name FROM 
Hist_internet
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
) x
GROUP BY name ORDER BY name

Mais DATE_SUB est une fonction MySQL et j’ai besoin d’une fonction pour MsSQL 2008

Dites-moi s'il vous plaît, comment sélectionner des données à partir de 30 jours en utilisant MsSQL 2008?

P.S .: Le type de données de datetime est smalldatetime

43
Alex N

Vous devriez utiliser DATEADD est Sql Server donc si essayez cette simple sélection vous verrez l’effet

Select DATEADD(Month, -1, getdate())

Résultat

2013-04-20 14:08:07.177

dans votre cas essayez cette requête

SELECT name
FROM (
SELECT name FROM 
Hist_answer
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE())
UNION ALL
SELECT name FROM 
Hist_internet
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE())
) x
GROUP BY name ORDER BY name
59
Raab

Essayez ceci: avec cela, vous pouvez sélectionner la date des 30 derniers jours, 

SELECT DATEADD(DAY,-30,GETDATE())
20
Anvesh

Pour ceux qui ne pouvaient pas faire fonctionner DATEADD, essayez plutôt ceci: (NOW () - INTERVAL 1 MOIS) 

11
maikelsabido

Version courte pour une utilisation facile:

SELECT * 
FROM [TableName] t
WHERE t.[DateColumnName] >= DATEADD(month, -1, GETDATE())

DATEADD et GETDATE sont disponibles dans SQL Server à partir de la version 2008 . Documentation MSDN: GETDATE et DATEADD .

0
walkerbox