2012-12-25 29 views
2

如何從2012年12月25日上午5:12:05存儲日期開始計算時間。如何使用php日期函數從oracle日期字段中選擇日期和時間

date('l F j, Y, g:i a',strtotime($last_login_details[FL_DATETIME])); 

這上面的函數返回的時間爲上午12:00,應返回上午05點12。

FL_DATETIME具有數據類型DATE。

在數據庫中,該值被存儲這樣的:

所有的
12/25/2012 5:12:05 AM 
+0

它返回'星期二2012年12月25日,5:12 am'我。 – PhearOfRayne

+0

我不認爲PHP版本很重要。只是注意到它只返回25-DEC-12當我回顯$ last_login_details [FL_DATETIME] – hsuk

+0

**小心!** PHP應該拋出警告和通知,由於語法無效,它會自動更正。你可能沒有把你的'error_reporting'級別變得足夠高。考慮一直到-1。 – Charles

回答

4

按照文檔 - http://docs.oracle.com/cd/B19306_01/server.102/b14220/datatype.htm#i1847 -

輸入和日期的輸出,標準的Oracle日期格式爲DD-MON-YY

這很可能是爲什麼$last_login_details[FL_DATETIME]正在呼應25-DEC-12

試着改變你的查詢中使用TO_CHAR()

SELECT TO_CHAR(FL_DATETIME, 'MM/DD/YYYY HH24:MI:SS A.M.') AS FL_DATETIME ... 

看到使用PHP 5.3.19 http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html#date格式

+0

直到發佈後纔看到更新的答案。 – Sean

+0

那麼你的意思是,即使它存儲在數據庫中,如dd-mm-yy hm:mm:ss,它只顯示日期而不顯示時間? – FreshPro

0

首先,在我看來,你應該儲存所有的日期爲Unix的時間戳。這使您可以更輕鬆地按時間進行搜索,並消除日期字符串操作中可能出現的任何不一致情況。

二,我測試了你的代碼;從我所知道的情況來看,這似乎是確定的。回覆您在$ last_login_details [FL_DATETIME]變量中獲得的內容。問題可能在於變量賦值,而不是日期字符串操作。

希望有幫助!

+0

給出25-DEC-12當我回顯$ last_login_details [FL_DATETIME] – hsuk

+0

這就是爲什麼你會得到你得到的結果。如果PHP的日期函數實際上並沒有在那裏獲得時間(例如:日期是25-DEC-12),它將自動默認時間到午夜。因此,25-DEC-12將於2012年12月25日星期二上午12:00。 –

+0

我明白了,但你可以在上面看到,價值存儲在12/25/2012 5:12:05 AM在數據庫中。 – hsuk

3

要解決我的問題:

SELECT TO_CHAR(FL_DATETIME, 'DD.MM.YYYY:HH24:MI:SS') FROM "FMS_LOG" 
相關問題