tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Problém s detekcí MySQL DATE jako DibiDateTime

před 7 lety

jlkcz
Člen | 2

Používám Dibi nad MySQL a v MySQL tabulce mám typy DATE a DATETIME

`id_events` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8_czech_ci NOT NULL,
`submitted_time` datetime NOT NULL,
`date_start` date NOT NULL,
`date_end` date NOT NULL,
`closed` tinyint(1) NOT NULL,
PRIMARY KEY (`id_events`)

Potíž se projevuje v tom, že mi Dibi konvertuje pole typu „date“ na DibiDateTime, takže mi pak všude leze i čas… A to i pokud daná pole selectuju pomocí DATE(date_end), kupodivu TIME(date_end) vrátí jen čas…

<?php
$bum = dibi::fetch("SELECT * FROM [events] WHERE [id_events]=1");
var_dump($bum);
?>

vrací:

object(DibiRow)#12 (11) { [„id_events“]⇒ int(1) [„name“]⇒ string(10) „Test“ [„submitted_time“]⇒ string(19) „0000–00–00 00:00:00“ [„date_start“]⇒ object(DibiDateTime)#9 (3) { [„date“]⇒ string(19) „2012–09–11 00:00:00“ [„timezone_type“]⇒ int(3) [„timezone“]⇒ string(13) „Europe/Berlin“ } [„date_end“]⇒ object(DibiDateTime)#10 (3) { [„date“]⇒ string(19) „2012–09–12 00:00:00“ [„timezone_type“]⇒ int(3) [„timezone“]⇒ string(13) „Europe/Berlin“ } [„closed“]⇒ int(0) } `

a co to vrátí při:

<?php
$bum = dibi::fetch("SELECT TIME([date_start]) FROM [events] WHERE [id_events]=1");
var_dump($bum);
?>

object(DibiRow)#9 (1) { ["TIME(date_start`)„]⇒ string(8) "00:00:00“ } `

Přijde mi, že detekovat DATE jako DATETIME je chyba (nebo aspoň velmi zajímavá feature), mimo jiné také proto, když člověk potřebuje jinak zformátovat DATE a jinak DATETIME

Dá se nějak vypnout detekce typů jen pro DATE? Podle dávného threadu: https://forum.dibiphp.com/…e-a-bc-break to vypadá že ne

Editoval jlkcz (21. 9. 2012 15:03)

před 7 lety

jlkcz
Člen | 2

Tak se ukazuje, že dvojitý setFormat() vyřeší problém s formátováním, takže to vlastně problém není…

<?php
 dibi::query('whatever')->setFormat(dibi::DATE,"Y-m-d")->setFormat(dibi::DATETIME,'G:i d.m.Y');
?>

A já jsem si jako obvykle vyřešil svůj problém ihned po položení dotazu

Editoval jlkcz (21. 9. 2012 15:15)