如何从存储为 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
根据文档 - 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格式
通过以下方式解决了我的问题:
SELECT TO_CHAR(FL_DATETIME, 'DD.MM.YYYY:HH24:MI:SS') FROM "FMS_LOG"
首先,在我看来,您应该将所有日期存储为 unix 时间戳。这使您可以更轻松地对时间进行搜索,并消除日期字符串操作可能引起的任何不一致。
其次,我测试了你的代码;据我所知,它看起来还不错。回显您在 $last_login_details[FL_DATETIME] 变量中得到的内容。问题可能在于变量赋值,而不是日期字符串操作。
希望有帮助!