2010-08-04 65 views
2

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

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

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

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

回答

2

为什么你需要格式化数据库层的输出呢?为什么不以PHP的日期和时间类型来检索它,并在那里格式化?同样对于输入值,您应该使用参数化查询并将值指定为日期/时间,而不是以特定格式将它们放入SQL中。

+0

我知道在你在说什么的ALTER会议,但我不完全得到怎么可能。当我在php中运行查询时,在返回所有字符串类型值的数据集中。即使严格的数值是。它们在数据库中存储的类型似乎并不重要,当我运行查询时,它们将作为字符串返回。 – 2010-08-04 16:40:46

+0

@The_Denominator:我不太了解PHP,以帮助更多的不幸 - 但我*真的希望*有一种方法可以将正确输入的数据从数据库中取出。我很难相信PHP会如此缺乏根本性。 – 2010-08-04 16:44:33

+0

是的,我认为这是完全可能的,如果不是这样,它会很奇怪。我只是不知道如何。谢谢你的帮助。 – 2010-08-04 16:46:37

2

,如果你真的需要改变格式,修改连接脚本中加入将改变NLS_DATE_FORMAT

$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); 
+0

谢谢,我现在使用oci8抽象层,我似乎无法找到相同的功能,你有没有可能知道它会是什么? – 2010-08-04 16:28:40