Új hozzászólás Aktív témák
-
Keem1
veterán
válasz
instantwater
#2159
üzenetére
Feltételezem, a kérdés nem valós

De ha mégis, attól függ, dilettáns módon csinálják-e. Sajnos még mindig látok olyan elvetemült, magát programozónak nevező embert, akinek a mínusz 1 hónap az, hogy levon 30 napot az aktuális dátumból

Pedig minden normális nyelv, a MySQL-t is beleértve tökéletesen csinálja.PS C:\> (Get-Date("2021-03-31")).AddMonths(-1)
2021. február 28., vasárnap 0:00:00
PS C:\>Szökőév:
PS C:\> (Get-Date("2024-03-31")).AddMonths(-1)
2024. február 29., csütörtök 0:00:00
PS C:\>Viszont ha már amúgy is MySQL:
MariaDB [(none)]> SELECT DATE_SUB(STR_TO_DATE("2021-03-31", "%Y-%m-%d"),INTERVAL 1 MONTH);
+------------------------------------------------------------------+
| DATE_SUB(STR_TO_DATE("2021-03-31", "%Y-%m-%d"),INTERVAL 1 MONTH) |
+------------------------------------------------------------------+
| 2021-02-28 |
+------------------------------------------------------------------+
1 row in set (0.001 sec)
MariaDB [(none)]> -
Keem1
veterán
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
WHEREré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
tstampaz 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

-
Keem1
veterán
válasz
Apollo17hu
#1970
üzenetére
Mindig tanul az ember valamit!

-
Keem1
veterán
Sziasztok!
Adott egy sematikus query-m, jelenleg így néz ki:SELECT * FROM tabla WHERE mezo1 LIKE 'kifejezes%'Szeretném, ha ez úgy működne, hogy a
mezo1 LIKE 'kifejezes%'a tábla egy másik értékétől (legyen mezo2) függően nyitott végű vagy zárt végű lenne.mezo2 értéke lehet 1 vagy 0. Ha mezo2=1, akkor nyitott a LIKE:
SELECT * FROM tabla WHERE mezo1 LIKE 'kifejezes%'ellenben ha mezo2=0, zárt a LIKE:
SELECT * FROM tabla WHERE mezo1 LIKE 'kifejezes'Töröm a fejem, de a megoldás nem ugrik be.

Furcsa egy kicsit, mert a lekérdezés egy értéktől függ, de az a baj, hogy ez fontos, hogy így legyen. És épp ezért nem áll össze nálam.Szerk
Átfogalmazom!
A lekérdezésünk változatlan lenne:SELECT * FROM tabla WHERE mezo1 LIKE 'kifejezes%'Azonban ma mezo2=1, az eredményhalmazból kizárnánk az olyan találatot, ami csak LIKE 'kifejezes%' esetén adna eredményt, míg LIKE 'kifejezes' esetén viszont nem. Ha az eredmény mezo2 értéke 0, akkor ha amúgy a lekérdezésnek megfelel, akkor mindegy, hogy a % ott van-e vagy sem, találatként értelmezzük.
Új hozzászólás Aktív témák
- Ilyen olcsó sem volt még egy Apple notebook
- EA Sports WRC '23
- Sweet.tv - internetes TV
- Pedzegeti az új Xbox irányát a Microsoft
- Renault, Dacia topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Kormányok / autós szimulátorok topikja
- talmida: Változások 2. rész
- Tőzsde és gazdaság
- Samsung Galaxy S25 - végre van kicsi!
- További aktív témák...
- Dahua 22" FULL HD IPS LED monitor 100Hz
- Apple iPhone 15 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! GIGABYTE RTX 5080 AERO OC 16GB videokártya garanciával hibátlan működéssel
- billentyűzetek - kiárusítás - Logitech, Corsair, ASUS
- Csere-Beszámítás! Apple Macbook Pro 2013 vége! 512GB SSD, I7, 16GB DDR3, Intel Iris Pro! Olvass!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest




