Mam encję z jedną kolumną typu "datetime" do przechowywania znacznika czasu.Włączanie mikrosekund w Symfony2 (Doctrine) i MySQL
/** * @ORM\Column(type="datetime") */ protected $timestamp;
miałem MySQL 5.5.40 i odkryłem, że nie przechowuje mikrosekund. Więc przełączyłem się na 5.6.21 i zaimportowałem wszystkie moje tabele i dane.
Próbowałem zadeklarować typ jak
* @ORM\Column(type="datetime(6)")
ale dał mi błąd. Więc zmieniłem go bezpośrednio w PB robi:
ALTER TABLE symfony.hrmgmt MODIFY timestamp DATETIME(6);
W moim kontrolera I to zrobić:
$dt = new \DateTime('now'); $newHREvent->setTimestamp($dt);
niemniej datownik jest przechowywany bez ułamków sekundy .
mogę (teraz) ręcznie wprowadzić datetime o wartościach ułamkowych poprzez SQL, ale kiedy to zrobić za pośrednictwem mojego kontrolera zawsze sklepów z .000000
Przypuszczam, że to dlatego, że doktryna nie wie, że można go przechowywać również mikrosekund .
Moja wersja PHP nadal 5.4.34.
Dziękujemy!
http://stackoverflow.com/questions/2572209/why-doesnt-mysql-support-millisecond-microsecond-precision –
Przeczytałem już ten post. Większość odpowiedzi odnosi się do wcześniejszych wersji MySQL 5.6, a więc nieistotnych. Odpowiedź z @Xavier Portebois jest trafna i precyzyjnie podążałem za wskazówką, by użyć DATETIME (6) zamiast DATETIME. Problem (jak na moje pytanie) pozostaje, jeśli spróbuję użyć doktryny zamiast czystego SQL. Czytanie dokumentacji Doctrine Znalazłem "znane problemy z dostawcami" (http://doctrine-dbal.readthedocs.org/en/latest/reference/known-vendor-issues.html) i jest tam odniesienie do problemów z mikrosekundami w PostgreSQL, ale to nie jest wspomniane dla MySQL. –
Zawsze w "znanych problemach z dostawcą" (w sekcji PostgreSQL) znajduje się następujący komentarz: "Właśnie dlatego Doctrine zawsze chce tworzyć typy związane z czasem bez mikrosekund ... Jeśli nie pozwolisz Doctrine utworzyć typów kolumn daty i raczej używaj typów z mikrosekundami, które zastąpiły typy "DateTime", "DateTimeTz" i "Time" z bardziej liberalnym parserem DateTime, który automatycznie wykrywa format ". Czy to jest potwierdzenie, że Doctrine wciąż nie obsługuje mikrosekund? Jak mam opisać "parsery liberalne"? –