2

如何从存储为 12/25/2012 5:12:05 AM 的日期开始计算时间。

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

上述函数返回时间为上午 12:00,应该返回上午 5:12。

FL_DATETIME 具有数据类型 DATE。

在数据库中,值的存储方式如下:

   12/25/2012 5:12:05 AM
4

3 回答 3

8

根据文档 - 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 ...

http://infolab.stanford.edu/~ullman/fcdb/oracle/or-time.html#date格式

于 2012-12-25T06:29:57.183 回答
3

通过以下方式解决了我的问题:

SELECT TO_CHAR(FL_DATETIME, 'DD.MM.YYYY:HH24:MI:SS') FROM "FMS_LOG" 
于 2012-12-25T06:26:34.163 回答
0

首先,在我看来,您应该将所有日期存储为 unix 时间戳。这使您可以更轻松地对时间进行搜索,并消除日期字符串操作可能引起的任何不一致。

其次,我测试了你的代码;据我所知,它看起来还不错。回显您在 $last_login_details[FL_DATETIME] 变量中得到的内容。问题可能在于变量赋值,而不是日期字符串操作。

希望有帮助!

于 2012-12-25T06:03:05.117 回答