我正在使用ZendFramework2,而我的数据库是Oracle 12。
我想为所有日期字段设置日期格式。
现在,当我选择日期字段时,结果为dd / mm / aa,我想要dd / mm / yyyy hh24:mi:ss。
(我使用TableGateway对象的方式与Zf2的Skeleton应用程序相同)
我可以在配置文件中执行此操作吗?
(执行此操作的sql代码应为“alter session set nls_date_format ='DD / MM / YYYY HH24:MI:SS';” )
感谢您的帮助。
<code>
------
config\autoload\db.config.global.php
------
<?php
return array(
'db' => array(
'driver' => 'OCI8',
'connection_string' => " (DESCRIPTION =
(SDU = 8888)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = 127.0.0.1)(PORT = 9999))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYDB)
)
)",
'character_set' => 'AL32UTF8',
),
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter'
=> 'Zend\Db\Adapter\AdapterServiceFactory'
)
)
);
</code>
答案 0 :(得分:1)
我有类似的问题,但我使用的是Doctrine 2而不是Zend \ Db。我当然正在使用Oracle。 Doctrine 2解决了连接后更改会话的问题:
/storage/emulated/0/concreteangelradioedit (1).mp3
整个文件OracleSessionInit。
您可以考虑使用Doctrine 2解决此问题。但是,如果您不能或您不想要,可以查看Zend Whitepaper PHP and Oracle第3-4页,“连接数据库”部分。这是一个ZF1解决方案,我没试过。但是很容易理解这个想法并适应ZF2。
答案 1 :(得分:0)
当我选择日期字段时,结果为dd / mm / aa,我想要dd / mm / yyyy hh24:mi:ss。
DATE 所见的格式仅适用于显示。 DATE以7 bytes
的内部格式存储,这是Oracle的专有格式。
您可以在单个SQL级别使用 TO_CHAR 将日期转换为字符串,以所需的格式显示。
例如,
SELECT TO_CHAR(date_column, 'dd/mm/yyyy hh24:mi:ss') my_format FROM table_name;
另请注意,NLS_DATE_FORMAT
具有优先顺序。
让我们看一下时间顺序优先顺序,即从最高到最低:
在个人sql语句
ALTER SESSION SET NLS_DATE_FORMAT=’whatever format model you want’;
在客户端计算机上将其设置为操作系统环境变量
NLS_DATE_FORMAT
的设置位于数据库初始化参数
更新 OP无法处理SQL级别的日期格式化。
在这种情况下,客户端/操作系统只需要显示格式,而无需在数据库/查询级别执行任何操作。无论您使用哪个客户端/操作系统显示日期,请务必修改客户端/操作系统的日期格式,以所需格式显示。