webForumDet fria alternativet

Hämta beroende på datum

3 svar · 435 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

Jag har ett fält av typen TIMESTAMP med CURRENT_TIMESTAMP satt som standard.

Jag vill kunna hämta:
dagens poster
poster för de sju senaste dagarna
och poster för de senaste 30 senaste dagarna

Använder jag t.ex
SELECT * FROM moodes WHERE moode = 1 AND date = CURRENT_TIMESTAMP
för att försöka hämta dagens poster så returneras inget då CURRENT_TIMESTAMP även innehåller tiden.

Hur ska man göra?

SPiNMedlem sedan mars 20007 896 inlägg
#2

För dagens poster:

select
   *
from
   moodes
where
   `moode` = 1
   and
   timestampdiff(HOUR, `date`, NOW()) <= 24

För senaste sju dagarna:

...
where
   timestampdiff(DAY, `date`, NOW()) <= 7

För 30 senaste dagarna:

...
where
   timestampdiff(DAY, `date`, NOW()) <= 30

timestampdiff i manualen.

PeddaMedlem sedan juni 20006 032 inlägg
#3

Tack SPiN för ditt svar.
Men jag får ett felmeddelande. Har bara testat att hämta dagens poster ännu.

SELECT * FROM moodes WHERE moode = 1 AND TIMESTAMPDIFF(HOUR, date) <= 24

Denna fråga returnerar false.

MySQL 5.1.36

SPiNMedlem sedan mars 20007 896 inlägg
#4

Det var inte så konstigt. ;) Hade ju glömt att ta med den tredje parametern i funktionsanropet!

Har uppdaterat mitt svar.

124 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)