2017-05-26 51 views
0

我想顯示我的查詢的正確的時間戳。我的數據庫中的日期是這個日期時間戳記設置在歐洲/柏林。這是在我的服務器設置,我總是得到這個結果。如何在mysql中選擇查詢時顯示正確的時間戳?

2017年5月26日9時05分58秒

我想顯示從我的查詢日期。這裏是我的查詢代碼

select logs.action_date_time from AuditLogs 

我怎麼能在這裏轉換logs.action_date_time日期在我的地方在菲律賓?我應該

2017-05-26T09看到這樣的結果:05:58 + 02:00

我尋找它在谷歌的UNIX_TIMESTAMP,但我沒有看到他們在使用任何樣品從查詢中選擇之前。我爲此使用了symfony。我只是給出了我的上述示例代碼的結果的摘要。

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); 

    } 

回答

1

爲了得到一個UTC日期時間列作爲UNIX時間戳

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

來源是在這裏:Link

+0

我嘗試轉換這個,但時間提前2小時。 – user3818576

+0

但我嘗試了你給我的鏈接 – user3818576

1

你需要使用MySQL的CONVERT_TZ功能的時區,例如轉換:

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

或者,您也可以提供時差爲好,如:

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

Here's的文檔。

+0

如果添加此我選擇CONVERT_TZ(logs.action_date_time, 'CEST', 'PHT')AS actionDateTime我發現我的迴應爲空 – user3818576

+0

@ user3818576添加了另一個查詢,現在試試? –