Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql中选择查询时如何显示正确的时间戳?_Php_Mysql_Symfony - Fatal编程技术网

Php 在mysql中选择查询时如何显示正确的时间戳?

Php 在mysql中选择查询时如何显示正确的时间戳?,php,mysql,symfony,Php,Mysql,Symfony,我想显示查询的正确时间戳。我的数据库中的日期就是这个,日期时间戳在欧洲/柏林设置。这是在我的服务器设置,我总是得到这个结果 2017-05-26 09:05:58 我想显示查询中的日期。这是我的查询代码 select logs.action_date_time from AuditLogs 在菲律宾我该如何转换日志。动作\日期\时间日期?我应该看到这个结果 2017-05-26T09:05:58+02:00 我在google中搜索unix_时间戳,但我没有看到他们在select before

我想显示查询的正确时间戳。我的数据库中的日期就是这个,日期时间戳在欧洲/柏林设置。这是在我的服务器设置,我总是得到这个结果

2017-05-26 09:05:58

我想显示查询中的日期。这是我的查询代码

select logs.action_date_time from AuditLogs
在菲律宾我该如何转换日志。动作\日期\时间日期?我应该看到这个结果

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

我在google中搜索unix_时间戳,但我没有看到他们在select before from查询中使用的任何示例。我用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);

    }
const SELECT=
“选择logs.id,logs.object\u id作为objectId,logs.object\u type作为objectType,logs.object\u name作为objectName,”。“logs.action,logs.action\u date\u time作为actionDateTime,logs.action\u status作为actionStatus,logs.subject,logs.user,”。“logs.description,logs.ip,logs.param03\u value作为userId,logs.param04\u value作为userDisplayName”;
公共函数getNext($params)
{
//目前的硬代码
$limit=$params['limit']?(int)$params['limit']:self::DEFAULT_limit;
$limit++;
$select=self::select;
$whereClause=$this->constructWhereClause($params);
$sql=”
$select FROM speak.audit_日志作为日志
$where条款
按logs.action\u date\u time DESC订购,logs.id DESC
限额$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
从spoke.audit_日志1,spoke.audit_日志
其中logs1.id=logs.id
$where条款

和logs1.action_date_time您需要使用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;

文档。

您需要使用MySQL的
CONVERT\u TZ
功能来转换时区,例如:

SELECT CONVERT_TZ(action_date_time, 'CEST', 'PHT') FROM AuditLogs;
或者,您也可以提供时区差异,例如:

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

文档。

获取UTC日期时间列作为UNIX时间戳

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

来源如下:

获取UTC日期时间列作为UNIX时间戳

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

来源如下:

如果添加此选项,请选择CONVERT_TZ(logs.action_date_time,'CEST','PHT')作为actionDateTime,我在我的response@user3818576添加了另一个查询,请立即重试?如果添加此查询,请选择转换(logs.action\u date\u time,'CEST','PHT')作为actionDateTime,我在response@user3818576添加了另一个查询,是否立即尝试?我尝试转换此链接,但时间提前了2小时。但是我尝试了你给我的链接。我尝试转换此链接,但时间提前了2小时。但是我尝试了你给我的链接