Ú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
- Zidoo Z1000 Pro 4K HDR Dolby Vision médialejátszó újszerű, dobozos
- Eladó Spirit Of Gamer Headquarter 300 gamer asztal
- Eladó Razer Goliathus Extended Chroma egérpad
- Mika 6EU Konvektor helyére szerelhető gázkazán (Sosem használt,Digitális,ventillátoros,zárt égéstér)
- Samsung Galaxy S26 Ultra 512GB, Kártyafüggetlen, 1 Év Garanciàval
- LG 45GS95QX - 45" Ívelt OLED / 2K WQHD / 240Hz 0.03ms / NVIDIA G-Sync / FreeSync Premium / HDMI 2.1
- iPhone X 64Gb akku 100%
- BESZÁMÍTÁS! Palit Gaming Pro RTX 3070 Ti 8GB videokártya garanciával hibátlan működéssel
- BESZÁMÍTÁS! ASRock B450M R5 5600X 16GB DDR4 512GB SSD RTX 4070 12GB DeepCool CC560 CoolerMaster 750W
- BESZÁMÍTÁS! ASRock B550 R5 5600 16GB DDR4 512GB SSD RTX 3070 Ti 8GB CM MasterBox MB520 TT 750W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest




