PDO和access.mdb数据库使用INSERT查询更改时区

时间:2018-05-22 10:40:05

标签: php pdo

我在使用PDO连接在数据库ACCESS .MDB中插入日期/时间字段时遇到问题。我正在使用WAMP SERVER

工作localhost

我在意大利工作。

重要提示:我不使用MySQL

<?php

$dateHour = new DateTime('now');

// var_dump($dateHour);
// OUTPUT:  2018-05-22 12:29:02   <-- CORRECT (hour is the same of my Windows Date/Time at bottom-right of the screen (for ITALY))

$sql = "INSERT INTO table ( DateTime, ... ) VALUES ( ?, ... )";
$s = $db->prepare($sql);
$s->execute(array($dateHour));

现在,如果我检索插入的记录,我会得到2小时前的DateTime!

$sql = "SELECT * FROM table WHERE ID = ?";
...
...

// var_dump($result['DateTime']);
// OUTPUT
// 2018-05-22 10:29:02  <--- 2 hour before!!!

1 个答案:

答案 0 :(得分:1)

您需要具体说明DateTime的时区。

$dateHour = new DateTime('now', new DateTimeZone('Europe/Rome')

我还没有尝试将其发布到数据库,但是使用

获取字符串
$dateHour->format('Y-m-d H:i:s')

将给出预期时间