2010-08-04 64 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