我正在尝试将带有时区的时间戳存储到我的oracle数据库中。
例如,我有以下代码:
$deadline = new \DateTime('2018-11-07 13:33', new \DateTimeZone("EUROPE/BERLIN"));
$control->setDeadline($deadline);
,存储在我的oracle数据库中的结果就是这个: 07.11.18 13:33:00.000000000 +01:00
但是我的目标是使用以下格式存储时间戳: 07.11.18 13:33:00.000000000 EUROPE / BERLIN
如果我运行此查询,则值将正确保存为所需格式:
update my_table
set deadline = TIMESTAMP '2018-11-07 09:00:00 EUROPE/BERLIN'
我做错了什么?正确格式化时间戳以使用symfony获得所需结果的正确方法是什么?
答案 0 :(得分:1)
就像synfony将global.mylog = function(prefix, message) {
debug ? (console.log(new Date().toString() + '\t' + prefix + '\t\t' + ((typeof message === 'string') ? message : util.inspect(message)) )) : null
};
// Logging helper function
var log = function(message)
{
mylog(__filename.slice(__dirname.length + 1), message);
};
转换为Europe/Berlin
一样-可能是一个错误。
作为解决方法,您可以执行以下操作:
+01:00
,然后插入没有任何时区的值,即
ALTER SESSION SET TIME_ZONE = 'Europe/Berlin';
如果您在$deadline = new \DateTime('2018-11-07 13:33');
$control->setDeadline($deadline);
列中插入时间戳,并且不提供任何时区信息,那么Oracle会将时区默认为您之前设置的当前TIMESTAMP WITH TIME ZONE
。
您也可以通过环境变量SESSIONTIMEZONE
或在注册表中SESSIONTIMEZONE
来设置ORA_SDTZ
。 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{ORACLE_HOME Name}\ORA_SDTZ