ugrás a tartalomhoz

Mysql lekérés szövegesen tárolt dátumok intervallumára, hogyan?

MSzilveszter · 2007. Ápr. 23. (H), 00.58
Sziasztok!

Szeretném a segítségeteket kérni a következőben:
adott egy adattáblám, melyben tárolok cimet, szerzot, szoveget és egy megjelenési dátumot és időt.
A megjelenesi_datum adja meg a napot ilyen formában: date('Ymd'), az idő pedig a percet és az órát így: date('Hi). Olyan (lehetőleg sql lekérdezéssel való) megoldást keresek, melyben ki tudnám keresni azokat a sorokat, amelyek :

- date('Ymd') >= megjelenesi_datum
- ÉS HA date('Ymd') == megjelenesi_datum AKKOR date('Hi') >= megjelenesi_ido.

A lényeg, hogy az adattábla oszlopneveit ne kelljen hozzá alakítanom, mert több ezer sorról van szó.

A gondom, hogy nem vagyok elég jártas a mysql lekérdezések világában, így ezt a feltétel rendszert létrehoznom a WHERE után nem nagyon sikerül. gondolkoztam IF-en, mint más nyelvben, de utána letettem róla, mert nem láttam erre realitást. Milyen ötletetetek van?

Üdv.:

Sly
 
1

egy irány

MSzilveszter · 2007. Ápr. 23. (H), 01.34
egy irány, amin elindultam volna, ha sikerült volna :)

"SELECT * FROM valami WHERE str_to_date('datum', 'forma') > ".date('Y-m-d H:i')." LIMIT 0, 154";

A legrosszabb, hogy VARCHAR(8) és VARCHAR(4) formában van tárolva a dátum és az idő, régi az adatbázis, és a mérete miatt nem szívesen engednék rá semmilyen autómatát, hogy átalakítsam timestamp-pal vagy hasonlóval az esetleges adatvesztés miatt.
2

Szöveges összehasonlítás

Nagy Gusztáv · 2007. Ápr. 23. (H), 12.13
Ha a dátumok szövegesen vannak, a részadatok 0-val kiegészítve, akkor a sima szöveges összehasonlítások is megfelelőek.
"20061210" < "20070202"
3

ezt tudom

MSzilveszter · 2007. Ápr. 23. (H), 23.36
ezt igazság szerint tudom, csak az okoz gondod, hogy azt hogy nézessem meg, hogy HA a dátum (20061210 = mai dátum) és nem nagyobb annál, akkor csak azokat nézze a listában, amik a pontos óra és percnél ami épp van a script futásakor, kisebb, tehát március 17én délben azokat ne találja meg amik március 17én délután kettőre vannak írva az adatbázisban, viszont 18án már ne tegyen különbséget a 17i cikkek közt. maga a feltétel rendszer megírása sql lekérdezésben a gond számomra.

Üdv.:

Sly
4

összefűzve

zzrek · 2007. Ápr. 24. (K), 08.49
És ha egyszrűen öszefűzöd a dátum és idő mezőket összehasonlítás előtt?
concat(datum,ido)>valami ?
(már ha az idő megfelelő formában van; akkor ilyen lesz kb: yymmddhhmm és akkor sztringént jól kezelhető)
5

CONCAT

csla · 2007. Ápr. 24. (K), 08.51
Vond össze a két mezőt, és azt vizsgáld a feltételben. Például:

... WHERE CONCAT(megjelenesi_datum,megjelenesi_ido) < "200704240855"
7

Köszönöm

MSzilveszter · 2007. Ápr. 24. (K), 12.12
Ez bevált, köszönöm! ;)
6

összefűzve

zzrek · 2007. Ápr. 24. (K), 08.53
És ha egyszrűen öszefűzöd a dátum és idő mezőket összehasonlítás előtt?
concat(datum,ido)>valami ?
(már ha az idő megfelelő formában van; akkor ilyen lesz kb: yymmddhhmm és akkor sztringént jól kezelhető)