2017-05-26 8 views
0

Ich möchte den richtigen Zeitstempel meiner Abfrage anzeigen. Das Datum in meiner Datenbank ist dieses Datum und das Datum ist in Europe/Berlin eingestellt. Das ist in meinem Server-Setup und ich bekomme immer dieses Ergebnis.Wie zeige ich den richtigen Zeitstempel an, wenn ich eine Abfrage in mysql auswähle?

2017-05-26 09:05:58

Ich möchte das Datum aus meiner Anfrage anzuzeigen. hier ist der Code von meiner Anfrage

select logs.action_date_time from AuditLogs 

Wie kann ich das logs.action_date_time Datum an meiner Stelle hier in den Philippinen zu konvertieren? Ich sollte dieses Ergebnis sehen

2017-05-26T09: 05: 58 + 02: 00

ich es in google die unix_timestamp suchen, aber ich sehe keine Probe, die sie verwenden in Wählen Sie vorher aus der Abfrage aus. Ich benutze Symfony dafür. Ich gebe nur eine Zusammenfassung des Ergebnisses meines obigen Beispielcodes.

const SELECT = 
     'SELECT logs.id, logs.object_id AS objectId, logs.object_type AS objectType, logs.object_name AS objectName, '.'logs.action, logs.action_date_time AS actionDateTime, logs.action_status AS actionStatus, logs.subject, logs.user, '.'logs.description, logs.ip, logs.param03_value AS userId, logs.param04_value AS userDisplayName '; 

    public function getNext($params) 
    { 
     // Hardcode for now 
     $limit = $params['limit'] ? (int) $params['limit'] : self::DEFAULT_LIMIT; 
     $limit++; 

     $select = self::SELECT; 
     $whereClause = $this->constructWhereClause($params); 

     $sql = " 
      $select FROM spoke.audit_logs AS logs 
      $whereClause 
      ORDER BY logs.action_date_time DESC, logs.id DESC 
      LIMIT $limit"; 

     if ($params['cursor']) { 
      $now = new \DateTime(); 
      $datetime = $now->getTimestamp(); 
      if (isset($params['datetime'])) { 
       $datetime = $params['datetime']; 
      } 
      $whereClause = $this->constructWhereClause($params, 'logs1', false); 
      $sql = " 
       $select 
       FROM spoke.audit_logs logs1, spoke.audit_logs logs 
       WHERE logs1.id = logs.id 
        $whereClause 
        AND logs1.action_date_time <= '$datetime' 
        AND (logs1.id < {$params['cursor']} OR logs1.action_date_time < '$datetime') 
       ORDER BY logs1.action_date_time DESC, logs1.id DESC 
       LIMIT $limit"; 
     } 
     $stmt = $this->getEntityManager()->getConnection()->query($sql); 

     return $stmt->fetchAll(\PDO::FETCH_ASSOC); 

    } 

Antwort

1

Um eine UTC Datetime-Spalte als UNIX Zeitpunkt

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name` 

Quelle ist hier: Link

+0

Ich versuche dies zu konvertieren, aber die Zeit Vorlauf 2 Stunden. – user3818576

+0

, aber ich versuche den Link, den Sie mir geben – user3818576

1

Sie müssen MySQL CONVERT_TZ Funktion verwenden, um die Zeitzonen zu konvertieren, zB:

SELECT CONVERT_TZ(action_date_time, 'CEST', 'PHT') FROM AuditLogs; 

Alternativ können Sie Zeitzonendifferenz als auch, zum Beispiel bieten:

SELECT CONVERT_TZ(action_date_time,'+01:00','+08:00') FROM AuditLogs; 

Here's die Dokumentation.

+0

Wenn fügen Sie diese meine CONVERT_TZ (logs.action_date_time, 'MESZ', 'PHT') AS actionDateTime wählen und ich fand Null in meiner Antwort – user3818576

+0

@ user3818576 eine weitere Abfrage hinzugefügt, versuchen Sie es jetzt? –

Verwandte Themen