Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从Oracle数据库检索日期_Sql_Oracle_Date - Fatal编程技术网

Sql 从Oracle数据库检索日期

Sql 从Oracle数据库检索日期,sql,oracle,date,Sql,Oracle,Date,我正在使用一个Oracle数据库,并尝试使用PHP从其表中获取数据。其中一个表包含一个日期列,其行为对我来说很奇怪 当我在DB客户端(我使用的是Navicat Lite)中打开表时,我会看到类似“2007-11-29 10:15:42”的日期,但当我用PHP检索它们并显示日期时,它会显示“29-NOV-07”。我使用了一个简单的SQL查询和标准PHP函数(oci_parse、oci_execute、oci_fetch_array) 为什么DB中的值会转换成这种(无用的)格式?如何才能像存储在数据

我正在使用一个Oracle数据库,并尝试使用PHP从其表中获取数据。其中一个表包含一个日期列,其行为对我来说很奇怪

当我在DB客户端(我使用的是Navicat Lite)中打开表时,我会看到类似“2007-11-29 10:15:42”的日期,但当我用PHP检索它们并显示日期时,它会显示“29-NOV-07”。我使用了一个简单的SQL查询和标准PHP函数(oci_parse、oci_execute、oci_fetch_array)


为什么DB中的值会转换成这种(无用的)格式?如何才能像存储在数据库中一样获取日期?谢谢你的提示

Oracle日期数据类型是一个时间点,它没有附加格式。将日期转换为字符串时(例如,如果要显示),应用于日期的格式将取决于会话参数(隐式转换)。根据我对PHP的记忆,检索函数将使用
NLS\u date\u FORMAT
session参数自动将日期转换为字符串

要么:

  • 提前更改NLS_日期_格式,方法是:

    ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
    
  • 或者,如果要在查询中指定另一种格式,则应明确要求:

     SELECT to_char(my_date, 'yyyy-mm-dd hh24:mi:ss') ...
    

更新 感谢您提供以下链接:

日期列作为格式化为当前日期格式的字符串返回。可以使用Oracle环境变量(如NLS_LANG)或以前执行的ALTER SESSION SET NLS_DATE_format命令更改默认格式


+1请参见此处的返回值说明: