Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Znaczniki czasu Laravel pokazujące milisekundy

Nie możesz, ponieważ sterownik PHP PDO nie obsługuje ułamków sekund w znacznikach czasu. Rozwiązaniem jest wybranie znacznika czasu jako ciągu znaków, aby sterownik PDO nie znał jego rzeczywistego znacznika czasu, po prostu wykonując $query->selectRaw(DB::raw("CONCAT(my_date_column) as my_date_column")) oznacza to jednak, że nie można użyć domyślnego wyboru dla wszystkich pól, więc wykonywanie zapytań staje się prawdziwym problemem. Musisz także nadpisać getDateFormat w modelu.

// override to include micro seconds when dates are put into mysql.
protected function getDateFormat()
{
    return 'Y-m-d H:i:s.u';
}

Wreszcie w migracji zamiast nullableTimestamps, poza wywołaniem zwrotnym schematu wykonaj:

DB::statement("ALTER TABLE `$tableName` ADD COLUMN created_at TIMESTAMP(3) NULL");

Zauważ, że ten przykład dotyczył 3 miejsc po przecinku, jednak możesz mieć do 6, jeśli chcesz, zmieniając 3 na 6 w dwóch miejscach, w tabeli alter i w sprintf, a także dostosowując mnożnik * 1000 do 1000000 dla 6.

Mam nadzieję, że pewnego dnia PHP PDO zostanie zaktualizowane, aby to naprawić, ale minęło już ponad 5 lat i nic się nie zmieniło, więc nie mam nadziei. Jeśli jesteś zainteresowany szczegółami, zobacz ten raport o błędzie:http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format -of-datetime-fields Znalazłem ten link w tej innej odpowiedzi, który może pomóc ci lepiej zrozumieć problem:https://stackoverflow. com/a/22990991/259521

PHP naprawdę pokazuje swój wiek ostatnio i uważam ten problem za jeden z moich powodów, aby rozważyć przejście na bardziej nowoczesny Node.js.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COMMIT OR conn.setAutoCommit(true)

  2. Jak przesłać wiele obrazów w laravel?

  3. Zrozumienie MySQL TRUNCATE TABLE na praktycznych przykładach

  4. MySQL ORDER BY rand(), nazwa ASC

  5. Kolejność wyników Laravela według kolumny w tabeli polimorficznej