我要做的是自动更改sql查询中日期的输出格式,而不必指定它(PHP / Oracle)。
我正在使用to_char(pi.date_of_birth , 'YYYY/MM/DD') as date_of_birth
来更改查询的格式。我希望能够将其应用于'*'
运营商返回的任何日期。
我的问题是我无法手动编写所有查询,其中大部分是动态生成的,而且以某种方式全局更改格式要容易得多。
现在我遇到的问题是我对数据库有“零”控制权。所以我不能进去改变任何东西,或者添加任何程序。是否有一些语法可以添加到我的查询中,或者将它集成到php中的简单方法?感谢。
答案 0 :(得分:2)
为什么需要格式化数据库层中的输出?为什么不将它检索为PHP用于日期和时间的任何类型,并将其格式化?同样,对于输入值,您应该使用参数化查询并将值指定为日期/时间,而不是以特定格式将它们放入SQL中。
答案 1 :(得分:2)
如果您确实需要更改格式,请修改连接脚本以添加将更改NLS_DATE_FORMAT的alter session
$db = new PDO("oci:dbname=" . $dbSource, $dbUser, $dbPass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD'";
$db->exec($sql);