Stránka 1 z 1

Pomoc s SQL dotazem

Napsal: 13 úno 2018 21:13
od Scientific
Ahoj,

prosím o pomoc s SQL dotazem, který nedělá co potřebuji, resp. špatně řadí datum.
Případně mi poraďte nějaké programátorské fórum o kterém si myslíte, že by mi tam byly ochotni poradit.

Mám dotaz:

Kód: Vybrat vše

SELECT DATE_FORMAT(pristi_datum, '%d.%m.%Y')
AS pristi_datum FROM terminy
WHERE 1=1
ORDER BY STR_TO_DATE(DATE_FORMAT(datum, '%d.%m.%Y'), '%d.%m.%Y')
ASC


Ale výsledek je špatný:

Kód: Vybrat vše

 pristi_datum    
06.05.2014
02.06.2016
17.02.2017
10.02.2018
11.03.2018
27.02.2015 // tento řádek má být téměř na začátku
18.02.2018 // tento řádek má být také o pár řádků výše
16.06.2018
11.08.2018
11.08.2018
11.08.2018


Děkuji moc za poskytnuté rady, které povedou k vyřešení mého problému.

Re: Pomoc s SQL dotazem

Napsal: 13 úno 2018 21:37
od popcorn
Čau, sice s SQL ti nepomůžu, ale mohu doporučit forum itnetwork.cz Tam ti určitě poradí :-)

Re: Pomoc s SQL dotazem

Napsal: 13 úno 2018 21:49
od satik
Za Order by nech jen čistě datum, takhle to radis podle stringu, co z data vznikne a ve stringu se porovnávají postupně znaky, takže největší váhu má u tebe den.

Re: Pomoc s SQL dotazem

Napsal: 13 úno 2018 21:56
od petrmet
Pokud je pole datum typu date, tak stačí
ORDER BY datum
Není potřeba to konvertovat na string.
K čemu je dobrá podmínka WHERE 1=1 ?

Re: Pomoc s SQL dotazem  Vyřešeno

Napsal: 13 úno 2018 21:57
od Scientific
Právě, že takhle datum nejvyšší váhu nemá, když se na to podíváš, tak to co říkáš neplatí, ale zkusil jsem to udělat jak radíš:

Kód: Vybrat vše

SELECT DATE_FORMAT(pristi_datum, '%d.%m.%Y') AS pristi_datum FROM terminy WHERE 1=1 ORDER BY pristi_datum ASC


Výsledek je přesně to co si říkal ty (řazení probíhá podle dnů):

Kód: Vybrat vše

 pristi_datum Ascending 1    
02.06.2016
06.05.2014
10.02.2018
11.08.2018
11.08.2018
11.08.2018
16.06.2018
17.02.2017
18.02.2018
27.02.2015


Dodatečně přidáno po 3 minutách 2 vteřinách:
Hotovo, už jsem našel kde jsem měl chybu, jsem to ale zmatkař....

Místo:
DATE_FORMAT(datum, '%d.%m.%Y'), '%d.%m.%Y')

Má být: DATE_FORMAT(pristi_datum, '%d.%m.%Y'), '%d.%m.%Y')

:-D ale děkuji za Vaše rady.