Kivéve napszak naptól a hét MySQL lekérdezés

szavazat
1

Próbál kijelölni adatok egyes nap a héten, mondjuk hétfőtől péntekig, de pénteken meg kell lennie, mielőtt egy bizonyos ideig, mondjuk 04:30. Ez meghúzva év adatai, így ez inkább egy szűrő tetején egy dátumot. Jelenleg a következő használjuk kiszűrésére csak bizonyos napon a hét:

SELECT *
FROM sometable
WHERE DAYNAME(created) IN ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday');

De kell hozzá a feltétel, hogy NE húzza adatok után létrehozott, 16:30 pénteken. Valami hasonló:

DAYNAME(created) = Friday AND HOUR(created) <= 16 AND MINUTE(created) <= 30

A hozzáadjuk a fenti whereakkor csak megragadja pénteki előtt 16:00 előtt 30 perccel az óra.

Valami javaslat?

A kérdést 10/10/2019 00:43
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Az egyik megoldás az lenne, hogy külön feltételrendszer a vasárnap. Továbbá azt javasoljuk WEEKDAY()(a nap száma a hét kezdő hétfő), mert lehetővé teszi, hogy lerövidíti a lekérdezést összehasonlító operátor BETWEEN:

SELECT *
FROM sometable
WHERE 
    WEEKDAY(created) BETWEEN 1 AND 4
    OR (WEEKDAY(created) = 5 AND HOUR(created) <= 16)

Ha azt szeretnénk, 16:30 helyett 04:00, akkor kissé eltérő megközelítést és kivonat az egész idő része a datetime összehasonlításra:

SELECT *
FROM sometable
WHERE 
    WEEKDAY(created) BETWEEN 1 AND 4
    OR (WEEKDAY(created) = 5 AND CONVERT(created, time) <= '16:30')
Válaszolt 10/10/2019 00:51
a forrás felhasználó

szavazat
0

Vajon valami ilyesmit megoldani a problémát?

SELECT *
FROM sometable
WHERE DAYNAME(created) IN ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')
AND HOUR(created) <= CASE WHEN DAYNAME(created) = "Friday" THEN 16 ELSE 24 END;
Válaszolt 10/10/2019 00:48
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more