2016-09-30 2 views
0

Ich benutze Symfony und Doctrine. Ich würde gerne die Zeit zwischen zwei Zeitstempeln verstreichen lassen. Hier ist ein Teil meiner Anfrage (beide a.date und q.date ist Typ: Zeitstempel):Wie bekomme ich die Zeit in Sekunden zwischen zwei Zeitstempeln in dql?

$qb->select('a.date - q.date AS elapsed_time'); 

Dies ergibt ein numerisches Ergebnis, aber ich kann nicht sagen, was die Einheiten sind. 9 Sekunden gaben mir 49, und 60 Sekunden gaben mir 99; Ich kann keinen Sinn daraus machen.

habe ich versucht, dies zu:

$qb->select('DATE_DIFF(a.date, q.date) AS elapsed_time'); 

Dies funktioniert, aber das Ergebnis in Tagen gibt. Ich brauche wirklich Minuten oder Sekunden.

Antwort

1

Verwenden Sie stattdessen UNIX_TIMESTAMP. versuchen Sie dies:

$qb->select('(UNIX_TIMESTAMP(a.date) - UNIX_TIMESTAMP(q.date)) AS elapsed_time'); 
+0

Fehler: "Erwartete bekannte Funktion, bekam 'UNIX_TIMESTAMP'" – Travis

+0

@ Billyhafiz es ist, weil Lehre keine eingebaute UNIX_TIMESTAMP Funktion hat. Sie müssen zu sql wechseln oder eine benutzerdefinierte Funktion erstellen UNIX_TIMESTAMP http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#adding-your- own-functions-to-the-dql-language –

+0

Ich habe dies zur Arbeit mit: https://github.com/beberlei/DoctrineExtensions – Travis

0

Sie müssen die Funktion DATE_FORMAT verwenden.

$qb->select(DATE_FORMAT(DATE_DIFF(a.date, q.date), '%s') AS elapsed_time); 

Versuchen Sie es. Ich habe jetzt keine Mysql-Konsole, aber ich denke, es würde funktionieren.

+0

Erhalte einen Fehler: "Erwartete bekannte Funktion, habe 'DATE_FORMAT'" – Travis

Verwandte Themen