自动格式化sql日期

时间:2010-08-04 16:05:35

标签: php sql oracle

我要做的是自动更改sql查询中日期的输出格式,而不必指定它(PHP / Oracle)。

我正在使用to_char(pi.date_of_birth , 'YYYY/MM/DD') as date_of_birth来更改查询的格式。我希望能够将其应用于'*'运营商返回的任何日期。

我的问题是我无法手动编写所有查询,其中大部分是动态生成的,而且以某种方式全局更改格式要容易得多。

现在我遇到的问题是我对数据库有“零”控制权。所以我不能进去改变任何东西,或者添加任何程序。是否有一些语法可以添加到我的查询中,或者将它集成到php中的简单方法?感谢。

2 个答案:

答案 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);