web-dev-qa-db-fra.com

Comment sélectionner les 6 derniers mois à partir de la table d'actualités avec MySQL

J'essaie de sélectionner les 6 derniers mois d'entrées dans une table. J'ai une colonne appelée datetime et celle-ci est au format datetime mysql.

J'ai vu de nombreuses manières en utilisant l'intervalle et d'autres méthodes - quelle méthode dois-je utiliser? Merci

30
Zabs

Utilisez DATE_SUB

 .... where yourdate_column > DATE_SUB(now(), INTERVAL 6 MONTH)
95
user319198

Essaye ça:

select *
  from table 
 where your_dt_field >= date_sub(now(), interval 6 month);

La requête se lit: donnez-moi toutes les entrées dans table où le champ correspondant à la date d'entrée est plus récent que 6 mois.

11
Pablo Santa Cruz

J'ai essayé @ user319198 answer d'afficher les 6 derniers mois (somme de) ventes, cela a fonctionné mais j'ai rencontré un problème le mois le plus ancien, je ne reçois pas le montant des ventes de tout le mois. Le résultat commence à partir du jour courant équivalent de ce mois.

Juste je veux partager ma solution si quelqu'un intéressé: -

yourdate_column > DATE_SUB(now(), INTERVAL 7 MONTH)
limit 6

En outre, ce serait formidable si quelqu'un a une meilleure solution pour mon cas J.

2
Bufaroosha

Vous pouvez également utiliser TIMESTAMPDIFF

    TIMESTAMPDIFF(MONTH, your_date_column, now()) <= 6 )
1
Md. Mahmud Hasan

Pour moi, cela ressemble à une solution puisque je l’utilise avec MariaDB, jetez un coup d’œil à la clause WHERE: 

SELECT MONTH(yourTimestampOrDateColumn) AS MONTH, USER, ActionID, COUNT(*) AS TOTAL_ACTIONS, ROUND(SUM(totalpoints)) AS TOTAL_PTS
FROM MyTable
WHERE MONTH(yourTimestampOrDateColumn) BETWEEN MONTH(CURDATE() - INTERVAL 6 MONTH) AND MONTH(CURDATE())
GROUP BY MONTH;

 queryResults

Sur l'image, nous ne voyons que les mois où l'utilisateur avait des données réelles enregistrées dans une base de données (montrant ainsi seulement 4 mois au lieu de 6). 

Donc ce mois est le 10 (octobre), il y a 6 mois était le 4ème mois (avril), donc la requête va rechercher cet intervalle (de 4 à 10).

1
stamster

Vous pouvez obtenir les données des six derniers mois en soustrayant interval of 6 month de CURDATE() (CURDATE() est la fonction MySQL qui renvoie la date du jour ).

SELECT * FROM table 
         WHERE your_date_field >= CURDATE() - INTERVAL 6 MONTH;

Ou vous pouvez utiliser l'opérateur BETWEEN de MySQL comme ci-dessous:

SELECT * FROM table 
         WHERE your_date_field BETWEEN CURDATE() - INTERVAL 6 MONTH AND CURDATE();
0
Haritsinh Gohil