Oracle数据库日期列在php中不显示完整日期

Oracle数据库日期列在php中不显示完整日期,php,oracle,date,oracle11g,Php,Oracle,Date,Oracle11g,我有日期列,日期值设置为格式:DD-MON-RR HH24:MI:SS 当我从sqldeveloper执行sql脚本时,我可以看到如下日期 2015年3月16日20:40:47。但是当我想用php获得这个值时: $currentDATE=$row['DATE']; echo gettype($row['DATE']); echo $currentDATE; 我认为结果是 2015年3月16日 如何在php页面中查看完整的日期信息?这将取决于Oracle客户端上的nls\u date\u格式设置

我有日期列,日期值设置为格式:DD-MON-RR HH24:MI:SS 当我从sqldeveloper执行sql脚本时,我可以看到如下日期 2015年3月16日20:40:47。但是当我想用php获得这个值时:

$currentDATE=$row['DATE'];
echo gettype($row['DATE']);
echo $currentDATE;
我认为结果是 2015年3月16日
如何在php页面中查看完整的日期信息?

这将取决于Oracle客户端上的nls\u date\u格式设置。这也是一个很好的演示,说明了为什么SQL脚本不应该依赖隐式转换

您有两个选择:

  • (建议)更新sql脚本,以便sql语句将
    输出到_char(,'')
  • 通过运行
    alter session set-nls\u-date\u-format='',更改默认的nls\u-date\u格式设置刚刚连接到SQL*Plus之后

  • 第一种选择是迄今为止最好的选择;这意味着任何必须运行该脚本的人都将看到相同的结果,而不必对nls_date_格式设置进行修改。

    这将是由于Oracle客户端上的nls_date_格式设置造成的。这也是一个很好的演示,说明了为什么SQL脚本不应该依赖隐式转换

    您有两个选择:

  • (建议)更新sql脚本,以便sql语句将
    输出到_char(,'')
  • 通过运行
    alter session set-nls\u-date\u-format='',更改默认的nls\u-date\u格式设置刚刚连接到SQL*Plus之后
  • 第一种选择是迄今为止最好的选择;这意味着任何必须运行该脚本的人都将看到相同的结果,而不必对nls_date_格式设置进行修改

    我有日期列,日期值设置为格式:DD-MON-RR HH24:MI:SS

    确保在显示日期时,使用TO_CHAR以及所需的格式掩码将日期显式转换为字符串

    您看到的日期格式取决于特定于语言环境的NLS设置

    记住

  • 对于日期计算,请使用将字符串转换为日期。如果是日期类型,则保持原样
  • 要以所需格式显示
    日期
    值,请使用To_CHAR和适当的格式掩码将其转换为字符串
  • 我有日期列,日期值设置为格式:DD-MON-RR HH24:MI:SS

    确保在显示日期时,使用TO_CHAR以及所需的格式掩码将日期显式转换为字符串

    您看到的日期格式取决于特定于语言环境的NLS设置

    记住

  • 对于日期计算,请使用将字符串转换为日期。如果是日期类型,则保持原样
  • 要以所需格式显示
    日期
    值,请使用To_CHAR和适当的格式掩码将其转换为字符串

  • 当我将php中的查询更改为SELECT to_date(B.issueDate,'DD-MON-RR HH24:MI:SS')时,B借用了我的查询;日期显示为空。您要使用
    到字符(b.issueDate,'DD-MON-RR HH24:MI:SS')
    而不是
    到日期()
    。是的,抱歉;我最初的答案是日期而不是字符。脑子出毛病了!当您直接在SQL*Plus中运行查询时(即不通过PHP,select语句显示了什么?如果您执行:
    select to_char(B.issueDate,'DD-MON-RR HH24:MI:SS'),该怎么办issuedate FROM borroedby
    ?注意:当您将日期数据类型中的内容转换为字符串时,使用
    to_char
    非常重要,这样您就可以以相关格式查看它。如果您对已经是日期的内容执行to_DATE,则您会强制Oracle执行隐式转换(两次),这可能会导致信息丢失on将丢失,因为隐式转换取决于nls_日期_格式设置。您是否尝试运行
    select to_char(B.issueDate,'DD-MON-RR HH24:MI:SS')issuedate来自PHP中的BorroedBy
    ?我怀疑问题在于您的PHP查询正在查找一个名为
    issuedate
    的列,该列由于周围的
    to_char
    而不再被调用。因此,当我将PHP中的查询更改为SELECT to_date>时,您必须将该列重新命名为
    issuedate
    (B.issueDate,'DD-MON-RR HH24:MI:SS')来自B;date显示为null您想使用
    to_CHAR(B.issueDate,'DD-MON-RR HH24:MI:SS')
    而不是
    to_date()
    。是的,抱歉;我的原始答案必须是日期而不是to CHAR。脑筋急转弯!当您直接在SQL*Plus中运行查询时(也就是说,不是通过PHP,select语句显示了什么?如果执行:
    select to_char(B.issueDate,'DD-MON-RR HH24:MI:SS'),该怎么办issuedate FROM borroedby
    ?注意:当您将日期数据类型中的内容转换为字符串时,使用
    to_char
    非常重要,这样您就可以以相关格式查看它。如果您对已经是日期的内容执行to_DATE,则您会强制Oracle执行隐式转换(两次),这可能会导致信息丢失on将丢失,因为隐式转换取决于nls_日期_格式设置。您是否尝试运行
    select to_char(B.issueDate,'DD-MON-RR HH24:MI:SS')在PHP中,issuedate来自BorroedBy
    ?我怀疑问题在于您的PHP查询正在查找名为
    issuedate
    的列,该列由于周围的
    to_char
    而不再被调用。因此,您必须将该列重新命名为
    issuedate