66 votes

Sélectionnez des enregistrements à partir d'aujourd'hui, cette semaine, ce mois-ci php mysql

J'imagine que c'est assez simple, mais ne peut pas le comprendre. Je suis en train de créer quelques pages, qui contiendra les résultats sélectionnés à partir de ma base mysql table pour aujourd'hui, cette semaine et ce mois-ci. Les dates sont saisies lors de l'enregistrement est créé avec date('Y-m-d H:i:s');. Voici ce que j'ai à ce jour:

le jour où la date>(date d'-(60*60*24))

 "SELECT * FROM jokes WHERE date>(date-(60*60*24)) ORDER BY score DESC"

la semaine où la date>(date d'-(60*60*24*7))

 "SELECT * FROM jokes WHERE date>(date-(60*60*24*7)) ORDER BY score DESC"

mois (30 jours) où la date>(date d'-(60*60*24*30))

 "SELECT * FROM jokes WHERE date>(date-(60*60*24*30)) ORDER BY score DESC"

Toutes les idées seront très appréciés. Merci!

126voto

Nathan Ostgard Points 3499

En supposant que votre colonne de date est une colonne de date MySQL:

 SELECT * FROM jokes WHERE date > DATE_SUB(NOW(), INTERVAL 1 DAY) ORDER BY score DESC;        
SELECT * FROM jokes WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK) ORDER BY score DESC;
SELECT * FROM jokes WHERE date > DATE_SUB(NOW(), INTERVAL 1 MONTH) ORDER BY score DESC;
 

74voto

mo. Points 321

Essayez d’utiliser les fonctions de date et d’heure (MOIS (), ANNÉE (), JOUR (), Manuel MySQL )

Cette semaine:

 SELECT * FROM jokes WHERE WEEKOFYEAR(date)=WEEKOFYEAR(NOW());
 

La semaine dernière:

 SELECT * FROM jokes WHERE WEEKOFYEAR(date)=WEEKOFYEAR(NOW())-1;
 

40voto

Lukas Brzak Points 1

Mois en cours:

 SELECT * FROM jokes WHERE YEAR(date) = YEAR(NOW()) AND MONTH(date)=MONTH(NOW());
 

Cette semaine:

 SELECT * FROM jokes WHERE WEEKOFYEAR(date) = WEEKOFYEAR(NOW());
 

Jour actuel:

 SELECT * FROM jokes WHERE YEAR(date) = YEAR(NOW()) AND MONTH(date) = MONTH(NOW()) AND DAY(date) = DAY(NOW());
 

Cela ne sélectionnera que le mois en cours, vraiment la semaine et vraiment seulement aujourd'hui :-)

9voto

David van Geest Points 492

Nathan réponse vous donnera des blagues de la dernière 24, 168, et 744 heures, PAS des blagues, à partir d'aujourd'hui, cette semaine, ce mois-ci. Si c'est ce que vous voulez, très bien, mais je pense que vous pourriez être à la recherche de quelque chose de différent.

À l'aide de son code, à midi, vous obtiendrez les blagues début hier à midi, et se terminant aujourd'hui, à midi. Si vous voulez vraiment aujourd'hui des blagues, essayez les solutions suivantes:

SELECT * FROM jokes WHERE date >= CURRENT_DATE() ORDER BY score DESC;  

Que vous avez à faire quelque chose d'un peu différent de l'actuel, semaine, mois, etc., mais vous obtenez l'idée.

4voto

KarlosFontana Points 113

Tout le monde semble faire référence à la date comme étant une colonne du tableau.
Je ne pense pas que ce soit une bonne pratique. Le mot date peut juste être un mot clé dans un langage de codage (peut-être Oracle), veuillez donc changer la date du nom de la colonne en peut-être JDate.
Ainsi, les éléments suivants fonctionneront mieux:

 SELECT * FROM jokes WHERE JDate >= CURRENT_DATE() ORDER BY JScore DESC;
 

Nous avons donc une table appelée Jokes avec les colonnes JScore et JDate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X