gpt4 book ai didi

php oci8 - 如何设置 oracle 时间戳返回格式

转载 作者:可可西里 更新时间:2023-10-31 22:56:18 33 4
gpt4 key购买 nike

我正在使用 php5 脚本从 Oracle 数据库中检索数据。我希望返回特定的时间戳格式。我在 SO 上找到了答案,说类似于 Oracle 本身的语句就可以解决问题:

$stid = oci_parse ($connection, "alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss.ff3'");
oci_execute ($stid);

这应该确保后续查询如

$stid = oci_parse ($connection, 'select * from table');
oci_execute ($stid);

导致时间戳格式以正确的格式返回。

但无论我做什么,我总是得到像这样的格式

28-NOV-12 05:37:24.000000 PM

所以我的问题是:怎么了?在 php 中执行什么语句以确保检索到所需的时间戳格式?

附带问题:我如何确保 php 检索 ISO 8601 格式的时间戳,因此字符串如 2012-11-28T17:37:24.000Z

在这种情况下如何确保“Z”,因此不是像 2012-11-28T16:37:24.000+01:00 这样的字符串?

最佳答案

ff3DATE 数据类型无效,因为它不包含小数秒。

至于您的 ISO8601 格式,只有 TIMESTAMP WITH TIME ZONE 具有实际时区。如果你想用 Z(即 UTC)格式化,你可以这样做;

ALTER SESSION SET TIME_ZONE = 'UTC';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"';

然后当您选择 TIMESTAMP WITH TIME ZONE 时,您将获得该格式。

如果您需要像这样格式化DATETIMESTAMP,您可以使用格式伪造时区部分;

ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd"T"hh24:mi:ss".000Z"'
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"'

SQLfiddle for testing here .

关于php oci8 - 如何设置 oracle 时间戳返回格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14688834/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com