Nefunkční formát volba ‚%i‘ v TIME_FORMAT v selectu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
freely111
Člen | 41
+
0
-

Ahoj,
narazil jsem možná na chybku, ale třeba dělám něco špatně.

Potřebuji ze sloupce v DB jako time, vytáhnout pouze minuty o místo minut mi to vrátí písmeno obalené apostrofem: ‚i‘.

$this->db->table(‚tabulka‘)->select(„TIME_FORMAT(sloupec_cas, ‚%i‘) AS sloupec_cas“)

Ale když použiji jinou volbu pro formát než %i, např. %H nebo %T, tak to vrátí správný výsledek. Pouze to má problém s volbou formátu pro minuty: %i

Nesetkal se s tím někdo? Verzi nette database mám v2.3.8.

Díky za rady

EDIT:
pokud si nechám vypsat co mi to složí za dotaz, tak mi to vypíše:

SELECT TIME_FORMAT(`time_to`, '%`i`') AS `time_to2` FROM ...

SELECT TIME_FORMAT(`time_to`, '%H') AS `time_to2 FROM ...

Když tam tedy dám %i, tak mi to obalí znaky `
U jiných formát masek jako %H nebo %T to nedělá. Není to vážně chyba na straně nette/database?

Editoval freely111 (15. 10. 2016 1:27)

Altimit
Člen | 82
+
0
-

Pokud to máš tak jak to je v příkladu tj. takhle:

SELECT TIME_FORMAT(`time_to`, '%`i`') AS `time_to2` FROM ...

Tak to je špatně.. protože to máš to „i“ obalené.. takhle to mám já:

SELECT TIME_FORMAT(`date`, '%i') FROM `shoutbox`

a vypíše mi to přesně minuty, které jsou v dané tabulce (všechny, nemám je filtrované), kdybych je chtěl filtrovat tak přidam už jen WHERE …

A jsou to příkazy přímo od mysql, zkus a uvidíš jest-li ti to půjde :)

David Matějka
Moderator | 6445
+
0
-

zkus to tam dosadit pres parametry:

->select("TIME_FORMAT(sloupec_cas, ?) AS sloupec_cas", '%i')
freely111
Člen | 41
+
0
-

David Matějka napsal(a):

zkus to tam dosadit pres parametry:

->select("TIME_FORMAT(sloupec_cas, ?) AS sloupec_cas", '%i')

Pro David Matějka:

->select("TIME_FORMAT(sloupec_cas, ?) AS sloupec_cas", '%i')

funguje, super, díky.

Pro Altimit:
Dotaz pokládám přesně jak si psal, ale pokud je tam písmeno „%i“ (pro minuty), tak mi to nette/database obalí (nevím proč), ale když použiji jiné formáty od MySql, např. „%H“ pro vrácení hodiny, tak je to v pohodě.

Ale pomohlo zadání jak psal David Matějka. Zajímavé, že tobě to „%i“ potíže nedělá :)

David Matějka
Moderator | 6445
+
0
-

pro vysvetleni: nette database dava do `` to, co povazuje za identifikator (nazvy sloupcu, tabulek).. tohle bohuzel spatne detekovalo. ale asi by nebyl problem to opravit..

freely111
Člen | 41
+
0
-

David Matějka napsal(a):

pro vysvetleni: nette database dava do `` to, co povazuje za identifikator (nazvy sloupcu, tabulek).. tohle bohuzel spatne detekovalo. ale asi by nebyl problem to opravit..

Díky za vysvětlení. Jestli by se to chovat tak nemělo v těchto případech u TIME_FORMAT, DATE_FORMAT apod, tak by to asi stálo za opravu v budoucí verzi. V žádostech na případné opravy apod. nemám zatím zkušenosti, tak bych to nechal na Tobě, jestli to někam napíšeš, díky.