web-dev-qa-db-fra.com

Comment extraire le mois et l'année d'une date MySQL et les comparer?

Comment extraire le mois et la date d'une date mySQL et les comparer à une autre date?

J'ai trouvé ce MOIS () mais il n'obtient que le mois. Je cherche mois et année.

27
JohnSmith

dans Mysql Doku: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_extract

SELECT EXTRACT( YEAR_MONTH FROM `date` ) 
FROM `Table` WHERE Condition = 'Condition';
61
betasux

Si vous comparez des dates, extrayez la date complète pour la comparaison. Si vous comparez uniquement les années et les mois, utilisez

SELECT YEAR(date) AS 'year', MONTH(date) AS 'month'
 FROM Table Where Condition = 'Condition';
30
Question Overflow

Bien qu'il ait été discuté dans les commentaires, il n'y a pas encore de réponse le contenant, il peut donc être facile de le manquer. DATE_FORMAT fonctionne très bien et est flexible pour gérer de nombreux modèles différents.

DATE_FORMAT(date,'%Y%m')

Pour le mettre dans une requête:

SELECT DATE_FORMAT(test_date,'%Y%m') AS date FROM test_table;
19
SELECT * FROM Table_name Where Month(date)='10' && YEAR(date)='2016';
5
Waseem Ahmad

Vous voudrez peut-être consulter les documents mySQL concernant les fonctions de date. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

Il existe une fonction YEAR () tout comme il y a une fonction MONTH (). Si vous faites une comparaison, y a-t-il une raison de couper la date? Êtes-vous vraiment intéressé à ignorer les différences basées sur le jour et si c'est le cas, comment voulez-vous le faire?

1
Carth

Il devrait également y avoir une ANNÉE ().

En ce qui concerne la comparaison, vous pouvez comparer les dates qui sont les premiers jours de ces années et mois, ou vous pouvez convertir la paire année/mois en un nombre approprié pour la comparaison (c'est-à-dire plus grand = plus tard). (Exercice laissé au lecteur. Pour des conseils, lisez le format de date ISO.)

Ou vous pouvez utiliser plusieurs comparaisons (c'est-à-dire les années d'abord, puis les mois).

1
aib