2012-12-25 27 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" 
相关问题