我正在使用Oracle DB,我正在尝试使用PHP从其表中获取数据.其中一个表包含一个对我来说很奇怪的日期列.
当我在我的数据库客户端打开表(我正在使用Navicat Lite)时,我看到日期如"2007-11-29 10:15:42",但是当我用PHP检索它们并显示它的日期时说"29-NOV" -07" .我使用简单的SQL查询和标准PHP函数(oci_parse,oci_execute,oci_fetch_array).
为什么DB中的值转换为此(无用)格式?如何获取日期,就像它存储在数据库中一样?谢谢你的提示!
Oracle DATE数据类型是一个时间点,它没有附加格式.将日期转换为字符串(例如,显示)时,应用于日期的格式将取决于您的会话参数(隐式转换).根据我记得的PHP,检索函数将使用NLS_DATE_FORMATsession参数自动将日期转换为字符串.
或者:
事先更改NLS_DATE_FORMAT:
ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
Run Code Online (Sandbox Code Playgroud)或者,如果要在查询中指定其他格式,则应明确要求:
SELECT to_char(my_date, 'yyyy-mm-dd hh24:mi:ss') ...
Run Code Online (Sandbox Code Playgroud)DATE列作为格式化为当前日期格式的字符串返回.可以使用Oracle环境变量(如NLS_LANG)或先前执行的ALTER SESSION SET NLS_DATE_FORMAT命令更改默认格式.