Yii2 Oracle 日期列

Posted

技术标签:

【中文标题】Yii2 Oracle 日期列【英文标题】:Yii2 Oracle date column 【发布时间】:2018-01-18 10:43:52 【问题描述】:

我正在尝试使用 GridView 小部件在 Yii2 框架中显示包含日期列的表格。

oracle 表中很少有特定列包含日期和时间(其余的只有日期),但是默认情况下提取数据时我只得到 DD-MM-YYYY,即使在 SQL Developer 中运行查询时我也得到相同结果,除非我专门用 to_char() 函数运行它。

从表中选择 to_char(column, 'DD.MM.YYYY HH24:MI:SS');

将显示完整数据,我对 Oracle 数据库还很陌生,所以我不确定如何在 Yii2 中正确显示。

如果我使用 Yii2 格式化程序,它会在以 DD-MM-YYYY 格式检索日期后格式化日期,这将导致时间为 00:00:00 ,而不是实际时间。

有什么建议吗?

谢谢!

【问题讨论】:

【参考方案1】:

在 SQL Developer 中运行查询时,我得到相同的结果,除非 我专门用 to_char() 函数运行它。

您应该在 SQL Developer 中修改日期格式,以便它也显示时间组件;默认情况下,它显然只返回日期。它(对于 17.4 版)在工具 - 首选项 - 数据库 - NLS - 日期格式中。

或者,正如您所注意到的,使用带有适当格式掩码的 TO_CHAR。

我不知道 Yii2 也不知道如何设置日期格式,抱歉。

【讨论】:

【参考方案2】:

我解决了这样的问题:

public static function getRightDate($period)

    $day = substr($period,0,2);
    $mon = substr($period,3,2);
    $year = '20'.substr($period,6,2);

    return $day.'.'.$mon.'.'.$year;

【讨论】:

这是oracle函数吗

以上是关于Yii2 Oracle 日期列的主要内容,如果未能解决你的问题,请参考以下文章

如果年龄列基于oracle中的出生日期列为空,如何更新年龄列?

如何从单个日期列-oracle 获取开始/结束日期

将日期列取消透视到 Oracle 中复杂查询的单个列

根据连接表的日期列之一的最大日期值执行更新 (Oracle)

Oracle - 将日期列与 sysdate 进行比较

Oracle JDBC 驱动程序自动格式化日期列