【问题标题】:Displaying date time with Php and Oracle. Time fails?使用 PHP 和 Oracle 显示日期时间。时间失效?
【发布时间】:2014-01-18 04:34:45
【问题描述】:

我有一个小问题。我将 PHP 与 Oracle 一起使用(顺便说一下,对 Oracle 来说是新手)。

在我的数据库中有一个名为 NEXT_START_DATE 的 DATE 字段,它的值为

25.12.2013 04:05:01

如下所示。

问题是我可以在我的网页中很好地获取日期值,但看不到时间之类的东西,如果你可以看到下图,它只会返回 25/12/2013。

我知道人们建议使用 pl/sql 函数,例如

to_date()

或

to_char()

但是这可能只使用 php 吗?我真的不能干涉SQL。任何帮助都会很棒,在此先感谢。

【问题讨论】:

  • 请分享您从中搜索/带来记录的查询,因为它正在修改结果
  • 在 PHP 中,您将其作为日期对象获取? $date->format('d.m.y h:i:s'); 帮不上忙?
  • 查询由框架根据id自动生成。在此示例中,使用的查询 -> SELECT * FROM FC_VIEW_PACKAGES WHERE ID = %d
  • @MaheswaranRavisankar 日期以字符串形式出现,但正如我所说,只显示日期,没有时间
  • @FreshPro 你用oci8吗?

标签: php oracle plsql


【解决方案1】:

在ADOdb,连接前一定要设置好格式:

$db = ADONewConnection("oci8");
// $db->debug = true;

// Date format is set before connecting.
$db->NLS_DATE_FORMAT = 'DD.MM.YYYY HH24:MI:SS';

礼貌: http://board.issociate.de/thread/192412/OCI_ignoring_NLS_DATE_FORMAT_parameter.html

【讨论】:

    【解决方案2】:

    您也可以在查询中使用 SQL 函数。

    例如,

    SELECT TO_CHAR(next_start_date, 'YYYY-MM-DD HH24:MI:SS') FROM mytable
    

    你会得到你指定格式的日期。

    正如@Maheswaran Ravisankar 指出的那样,还有 NLS_DATE_FORMAT,但如果您设置它,该格式将用于所有查询(不指定 to_char)。我总是在我的所有selects 中使用 to_char,因为它允许我为每个查询指定单独的格式。

    【讨论】:

    • 我不明白的是,为什么我在 Pl/sql 中得到了正确的值,但在 php 中却没有?
    • 您也可以在 php 中获得正确的 值。你只是没有得到正确的格式。原因是您的环境变量(NLS_LANG、NLS_DATE_FORMAT 等)在您的 sqlplus 环境和您的 php 环境中可能设置不同。
    • 所以即使时间正确,由于我的日期格式不同,无法正确获取时间部分
    猜你喜欢
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多