Centar za edukaciju-BiH



#1 14.07.2017 09:52
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
PreuzmiIzvorni kôd (Text):
  1. CREATE TABLE mojaTabla
  2. (
  3.     kolona1 TEXT
  4.     , kolona2 TEXT
  5. )
  6. GO
  7.  
  8. INSERT mojaTabla (kolona1,kolona2) VALUES ('jabuka', '22:35')
  9. INSERT mojaTabla (kolona1,kolona2) VALUES ('jabuka', '01:35')
  10. INSERT mojaTabla (kolona1,kolona2) VALUES ('kruska', '12:35')
  11. INSERT mojaTabla (kolona1,kolona2) VALUES ('kruska', '21:35')

ovo zelim:

voce vrijeme
======== =========
kruska 12:35
kruska 21:35
jabuka 22:35
jabuka 01:35

ORDER BY bi trebao izgledati ovako:

SELECT voce, TIME(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as vrijeme
FROM mojaTabla
ORDER BY
(CASE WHEN vrijeme < '02:00' then mojaTabla.vrijeme end) ASC,
(CASE WHEN vrijeme > '02:00' then mojaTabla.vrijeme END) DESC

ali mi to ne radi, gdje gresim?
zivot je moja domovina.
↑  ↓

#2 14.07.2017 19:19
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
Eve ovo probaj

SELECT * FROM mojatabla
ORDER BY
CASE WHEN Kolona2 <'02:00' then Kolona2 END ASC,
CASE WHEN Kolona2 >'02:00' then Kolona2 END DESC;

Samo u ovom primeru vreme je tekstualno polje tako da moras da pretvoris u datetime da bi to korekno radio .
Ja sam ovde radio sa stringom kako i jeste tabela.
↑  ↓

#3 14.07.2017 21:20
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
TIME(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as vrijeme

Pa pretvorio evo ovo gore
zivot je moja domovina.
↑  ↓

#4 14.07.2017 22:45
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
Moras to uraditi kod uslova jer ovako uslov je string
↑  ↓

#5 16.07.2017 15:10
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
a zasto mi nece ovo:

date_sub(str_to_date(sati,'%H:%i'), interval 3 hour) as vrijeme

pretvoriti string sati u vrijeme, a onda od toga oduzeti 3 sata i staviti kao vrijeme?
zivot je moja domovina.
↑  ↓

#6 16.07.2017 15:36
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
evo ga:

SELECT voce, HOUR(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as sati
FROM mojaTabla
ORDER BY
(CASE WHEN sati < 3 then sati end) ASC,
(CASE WHEN sati > 3 then sati END) DESC

nije bas neko rijesenje ali za sada prolazi
zivot je moja domovina.
↑  ↓

#7 16.07.2017 19:28
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
Ti si sad izvadio samo cas koj u ovaj tvoj slucaj e broj odnosno neki integer tip i ovo tvoje radice samo na osnovu casova ,ako ti treba ju i minute onda bi trebal nesto ovako

SELECT voce, HOUR(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as sati
FROM mojaTabla
ORDER BY
(CASE WHEN sati < HOUR(STR_TO_DATE('03:12'', '%H:%i')) then sati end) ASC,
(CASE WHEN sati > HOUR(STR_TO_DATE('03:12'', '%H:%i')) then sati END) DESC
↑  ↓

#8 17.07.2017 14:31
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
hvala na pomoci
zivot je moja domovina.
↑  ↓

#9 24.07.2017 10:52
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,696


Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
>POVEZANA TEMA<

ovdje gore je link na temu koja ima veze sa ovime ovdje.
Ukratko, uvoz podataka na neki cudan nacin ide obrnutim redosljedom na server, a lokalno se uvozi od 1 reda do zadnjega. To mi je zadavalo problem kod pretrage. Polja koja su type text a sadrze sate obrnuto su se prikazivala. Htio sam ih sortirati ali sam imao problem sa poljima koja sadrze 00:10. One spadaju u danasnji dan kod mene, u stvarnosti je to drugi dan. Da bi sortirao morao sam odrediti da sve do 00:59 spada u danasnji dan. Evo kako sam to rijesio:

SELECT voce,
IF( STR_TO_DATE( mojaTabla.vrijeme, ' %H:%i ' ) ) < STR_TO_DATE(' 01:00 ', ' %H:%i '),
    STR_TO_DATE( mojaTabla.vrijeme, ' %H:%i ' ) ) + STR_TO_DATE( ' 24:00 ', ' %H:%i '),
    STR_TO_DATE( mojaTabla.vrijeme, ' %H:%i ' ) )) AS satiMinute
FROM mojaTabla
ORDER BY satiMInute ASC

koristio sam IF naredbu u SELECT, IF [uvijet,THEN, ELSE] => jednostavno receno ako su sati manje od 1 uvecaj sate za 24 a ako nisu ne radi nista. Na kraju sortiraj po satima ASC (od najmanjeg do najveceg).

Za sada toliko, mozda nekome i pomogne nikad se nezna.
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 24.07.2017 14:56 od strane Avko. ↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 10: 11 am.