sql >> Database >  >> RDS >> Mysql

Laravel-tijdstempels om milliseconden weer te geven

Dat kan niet omdat het PHP PDO-stuurprogramma geen fractionele seconden in tijdstempels ondersteunt. Een tijdelijke oplossing is om in plaats daarvan de tijdstempel als een tekenreeks te selecteren, zodat de PDO-driver niet weet dat het een echte tijdstempel is, simpelweg door $query->selectRaw(DB::raw("CONCAT(my_date_column) as my_date_column")) dit betekent echter dat u de standaardselectie niet voor alle velden kunt gebruiken, dus het opvragen wordt een echte pijn. U moet ook getDateFormat op het model overschrijven.

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

Eindelijk in uw migratie in plaats van nullableTimestamps, buiten de Schema-callback:

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

Merk op dat dit voorbeeld voor 3 decimalen was, maar je kunt er maximaal 6 hebben als je wilt, door de 3 op twee plaatsen in een 6 te veranderen, in de alter-tabel en in de sprintf en ook de vermenigvuldiger * 1000 aan te passen tot 1000000 voor 6.

Hopelijk zal PHP PDO op een dag worden bijgewerkt om dit op te lossen, maar het is meer dan 5 jaar geleden en er is niets veranderd, dus ik heb geen hoop. Als je geïnteresseerd bent in de details, bekijk dan dit bugrapport:http://grokbase.com/t/php/php-bugs/11524dvh68/php-bug-bug-54648-new-pdo-forces-format -of-datetime-fields Ik vond die link in dit andere antwoord dat je misschien kan helpen het probleem beter te begrijpen:https://stackoverflow. com/a/22990991/259521

PHP laat de laatste tijd echt zijn leeftijd zien en ik zou dit probleem als een van mijn redenen beschouwen om over te stappen naar het modernere Node.js.



  1. NLS_CHARSET_NAME() Functie in Oracle

  2. procedure in mysql

  3. Geen geschikte driver gevonden voor jdbc in Spark

  4. Xampp MySQL start niet - Poging om MySQL-service te starten...