[ Bozzzi @ 30.10.2007. 18:34 ] @
Dakle ovako,

treba mi pomoc oko upita. U bazi imam tabelu koja ima polje "vrijeme" i polje "naziv". Vrijeme je definisano kao TIME a naziv kao text.

Moze li mi ko pomoci oko upita, tj. kako uzeti najblize vrijeme trenutnom?

Primjer: Ako je trenutno vrijeme 18:00 kao uzeti iz baze red koji ima vrijeme koje je najblize trenutnom?


Hvala.
[ jablan @ 30.10.2007. 18:45 ] @
Najbliže u budućnosti ili i u budućnosti i prošlosti?

Za prvi slučaj dodaj u WHERE da vreme bude veće od trenutnog, sortiraj po vremenu i stavi LIMIT 1.

Za drugi slučaj trebaće malo aritmetike sa datumima.
[ Bozzzi @ 30.10.2007. 19:13 ] @
Hvala na odgovoru, ali stvar je malo komplikovanija.

Da bi pokusasao da vam objasnim uzecu primjer TV programa.

Ako neka emisija pocinje u 18:00 sati, zatim sledeca poslije nje u 18:30, trenutno vrijeme je 18:18 (na primjer) - zelim da dobijem informaciju kao trenutno na programu je: (i ime emisije koja je pocela u 18:00). Da li to znaci da samo treba da uzmem prvo vrijeme koje je <= sa current time?

Sta znaci malo aritmetike sa datumima? Da ako je npr. 00:30 trenutno. a prva prosla emisihja prosli dan 23:30, da oduzimam dan pa...

Molim Vas da mi malo samo pojasnite stvar.

Hvala!
[ misk0 @ 30.10.2007. 22:21 ] @
Koristi Between Trenutnovrijeme - 30min AND TrenutnoVrijeme + 30min
[ Bozzzi @ 30.10.2007. 22:30 ] @
A sta ako je Pocetak emisije u 18:30, a prvi sledeci u 21:00 na primjer? A Prvi pedhodni u 14:00 na primjer?

Meni treba neko OPSHTE rjeshenje! Kako bi se napisalo tako neshto?
[ lukeguy @ 31.10.2007. 00:42 ] @
Mislim da bi ti onda ovo jablanovo rešenje odgovaralo. "Aritmetika" bi ti trebala ako ti je važno da najbliže vreme bude najbliže u apsolutnom odnosu, dakle nebitno da li najbliži prošli trenutak ili najbliži budući trenutak. Mada čini mi se da bi i ovo moglo lako da se reši koristeći apsolutnu razliku tih vremena. Nešto tipa ORDER BY ABS(TIME()-t1.vreme) uz TOP 1. Koliko mi je poznato većina servera datumsko polje i čuva kao neku float/double vrednost.
[ Bozzzi @ 31.10.2007. 14:10 ] @
Ja sam probao tako nesto, ali mi za neke dane izadje greska tipa da izabere emisiju koja jos nije ni pocela pa kaze "Trenutno na programu - pa emisija koja je sledeca tj nije jos pocela. Da bi vam jos blize primakao dacu jos jedan primjer:

Ovo su podaci u bazi cija su polja definisana kao DATE, TIME, TEXT

Kanal BBC

2007-11-01 09:00:00 A YEAR AT KEW
2007-11-01 09:30:00 WILDLIFE SPECIALS: ELEPHANTS - SPY IN TH
2007-11-01 10:30:00 KEEPING UP APPEARANCES
2007-11-01 11:00:00 ONLY FOOLS AND HORSES
2007-11-01 11:30:00 NEXT OF KIN
2007-11-01 12:00:00 ANTIQUES ROADSHOW
2007-11-01 13:00:00 HETTY WAINTHROPP INVESTIGATES
2007-11-01 14:00:00 HOW I MADE MY PROPERTY

Kanal Extreme Sport

2007-11-01 10:00:00 MotoGP MotoGP
2007-11-01 11:00:00 MotoGP MotoGP
2007-11-01 12:00:00 MotoGP MotoGP
2007-11-01 13:00:00 MotoGP MotoGP
2007-11-01 14:00:00 TIMBERSPORTS SERIES
2007-11-01 14:30:00 TIMBERSPORTS SERIES
2007-11-01 15:00:00 Strongest Man
2007-11-01 16:00:00 Football

Kanal Rai Uno

2007-11-01 09:00:00 Occhio alla spesa
2007-11-01 09:25:00 Che tempo fa
2007-11-01 09:30:00 Tg1
2007-11-01 10:00:00 La prova del cuoco
2007-11-01 11:30:00 TELEGIORNALE
2007-11-01 12:00:00 Tg1 Economia
2007-11-01 12:10:00 Festa Italiana Storie
2007-11-01 13:50:00 Festa italiana
2007-11-01 14:15:00 La vita in diretta

Treba mi upit koji bi vratio trenutno na TV-u za 11:45 sati sledece:

BBC 2007-11-01 11:30:00 NEXT OF KIN
Extreme Sport 2007-11-01 11:00:00 MotoGP MotoGP
Rai Uno 2007-11-01 11:30:00 TELEGIORNALE

I sta ako bi bio prvi prosli dan ranije tj. ako trazim vrijeme za 00:30, a prvi prosli je predhodnog dana u 23:30?

Molim vas napisite neki upit koji bi vratio nesto ovako, posto sam ja pokusavao i dobro mi radi za neka vremena, a za neka mi ne ispisuje ispravno. To mi nije dovoljno.

Hvala jos jednom.
[ jablan @ 31.10.2007. 14:19 ] @
Kapiram šta hoćeš, koristim jedan takav sajt sa programima ovde u Češkoj.

Rešenje je nešto na foru:
Code:

TOP 1 ... WHERE vreme < NOW ... ORDER BY vreme DESC -- emisija u toku
UNION
... WHERE vreme > NOW AND vreme < SUTRAUJUTRU... ORDER BY vreme ASC -- emisije u toku ostatka dana.
[ Bozzzi @ 31.10.2007. 14:36 ] @
Ajde molim te daj mi jedan kompletan upit koji radi da ga mogu prepraviti jer nisam nikada koristio TOP!
[ jablan @ 31.10.2007. 14:41 ] @
Brate, nemam MySQL pri ruci. Trebalo bi da je nešto na foru:
Code:

(SELECT * FROM program
WHERE vreme < NOW()
ORDER BY vreme DESC
LIMIT 1)
UNION
(SELECT * FROM program
WHERE vreme BETWEEN (NOW() AND ADDTIME(NOW(), '12:00:00')) <= nisam siguran kako dodaješ 12 sati na vreme u MySQL, pogledaj help
ORDER BY vreme)
[ Bozzzi @ 31.10.2007. 14:58 ] @
Da ali ako mi jedna emisija pocinje u 00:05:00, a predhotna - prethodni dan u 23:50, a trenutno vrijeme je 00:03:00 vrati mi emty?
Kako bi se moglo rijesiti ovo?

Trebao bi vratiti Prosli dan 23:50
[ jablan @ 31.10.2007. 15:02 ] @
Ne razumem kakve veze ima koji je dan?! U bazi čuvaj kompletne datume i vremena.
[ Bozzzi @ 31.10.2007. 15:10 ] @
Razumijem ja to, ali su mi razdvojeni datum i vrijeme u dvije posebe kolone!
[ jablan @ 31.10.2007. 15:12 ] @
E pa žao mi je, greška.