Új hozzászólás Aktív témák

  • Keem1

    addikt

    Srácok, valószínűleg nagyon egyszerű amit akarok, csak én nem látom a fától az erdőt.
    Van egy timestamp-em (tstamp), kellene nekem a mindenkori "múlt hónap".

    Amim már van (a WHERE részeként):
    - ma: DATE(`tstamp`) = DATE(NOW())
    - ebben a hónapban: YEAR(`tstamp`) = YEAR(NOW()) AND MONTH(`tstamp`) = MONTH(NOW())
    - ebben az évben: YEAR(`tstamp`) = YEAR(NOW())

    Először valami ilyesmire gondoltam (gugli):
    MONTH(CURRENT_DATE - INTERVAL 1 MONTH)

    De ebben az esetben nem fog kelleni (ha a mai napot nézzük, amikor is április van) a 2020-as március, csak a 2021-es március. A YEAR(NOW()) AND MONTH(NOW()-1) meg elvérzik januárban.

    Tehát a kérdésem: hogy kapom meg azokat a sorokat, ahol a tstamp az aktuális év előző hónapjának bármelyik napja? Annyi még, hogy a tstamp nem date, hanem timestamp, és egy napra akár több sor is lehet (2021 márciusára jelenleg 872 van összesen).

    Fontos: pure mysql kell, nem a host programozási nyelvben szeretném tovább filterezgetni, mivel a hívó program beágyazott kis teljesítményű hardveren fut, ami DB-related, azt végezze csak szépen a DB szerver. Ráadásul magának a programnak és a kapott DB query resultnak is robusztusnak kell lennie, éjjel-nappal futó service-ről van szó Linuxon, nem szállhat el egy hibás query miatt (pl. a fenti januári anomália). Ezért a legegyszerűbb, legegyértelműbb és legbiztonságosabb query-t kell megalkotnom, amit a futó service maga már nem igazán fog ellenőrizni.

    Előre is köszi :R

    [ Szerkesztve ]

Új hozzászólás Aktív témák