webForumDet fria alternativet

Hämta beroende på datum

Databaser & SQL

3 svar · 435 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#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?

Medlem 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.

Medlem sedan juni 20006 031 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

Medlem 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.

262 ms totalt · 4 externa anrop · v20260731065814-full.bd618308
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)