webForumDet fria alternativet

Poster i speciell månad

5 svar · 564 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

Denna använder jag för att kolla om någon posts datum ligger i intervallet ifrån dagens datum.

SELECT id, startdate, stopdate, note FROM my_calendar WHERE '2010-04-01' BETWEEN startdate AND stopdate;

Hur gör jag om jag vill kolla hela månaden?
Alltså om postens datum befinner sig i april månad 2010.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Prova detta:

SELECT id, startdate, stopdate, note FROM my_calendar WHERE 
(
  '2010-04-01' > LAST_DAY(DATE_SUB(startdate, INTERVAL 1 MONTH))
  AND
  '2010-04-01' <= LAST_DAY(stopdate)
)

LAST_DAY ger månadens sista dag. Denna fråga kollar om det angivna datumet ligger inom månaderna som startdate och stopdate definierar.
Exempel:
startdate = '2010-04-02'
stopdate = '2010-05-30'
2010-04-01 matchar eftersom det ligger inom månad 4 och 5. '2010-05-31' matchar också.

SPiNMedlem sedan mars 20007 896 inlägg
#3

Vilken DBMS? MySQL tillhandahåller en month()-funktion;

select
   id,
   startdate,
   stopdate,
   note
from
   my_calendar
where
   month('2010-04-01') = month(startdate)
nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

SPiN: Två uppenbara problem med din kod:

  1. Den tar inte hänsyn till året.
  2. Den tar bara hänsyn till startdatumet.
TravoniMedlem sedan okt. 20041 556 inlägg
#5

Jo, det är mysql.

SPiNMedlem sedan mars 20007 896 inlägg
#6

nitro2k01 skrev:

SPiN: Två uppenbara problem med din kod:

  1. Den tar inte hänsyn till året.
  2. Den tar bara hänsyn till startdatumet.

Japp, hade lite bråttom just då ;)

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