Je dois obtenir des lignes de la base de données où les enregistrements sont d'un mois. J'ai essayé ce SELECT:
$result = mysql_query("SELECT * FROM my_table WHERE DATEPART('month', date_column)=11");
Dans la base de données, il y a beaucoup de lignes qui ont une date dans le 11. mois, mais je n'ai aucun résultat .. Quelqu'un peut-il m'aider? Remercier!
Il n'y a pas de fonction DATEPART
dans MySQL. Utilisez MONTH(date_column)
ou EXTRACT(MONTH FROM date_column)
à la place.
SELECT * FROM my_table WHERE MONTH(date_column)=11
Si vous avez un index sur date_column et que vous vous préoccupez des performances, il est préférable de NE PAS appliquer de fonctions sur la colonne. (Sachez que cette solution, ne répond pas exactement à ce que vous avez demandé, car elle concerne également l'année)
-- For mysql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < '2012-11-01' + INTERVAL 1 MONTH
-- For tsql specific:
SELECT * FROM my_table
WHERE date_column >= '2012-11-01'
and date_column < DATEADD(month,1,'2012-11-01')
Si votre DATEPART ne fonctionne pas dans MYSQL, vous pouvez utiliser:
SELECT * FROM MyTable WHERE MONTH(joinningDate)=MONTH(NOW())-1 and YEAR(joinningDate)=YEAR(NOW());
Il renverra tous les enregistrements qui ont été insérés dans MyTable le mois dernier.