【发布时间】:2017-05-13 00:49:32
【问题描述】:
我有一个 MySQL 数据库表,其中有一列名为 "timestamp",类型为 timestamp,属性为 on update CURRENT_TIMESTAMP,默认值为 CURRENT_TIMESTAMP。
如果我向表中添加一条记录,指定其他值,但不指定时间戳,则时间戳会自动添加,如 2016-12-28 17:02:26。
在 PHP 中,我使用以下查询查询表
SELECT * FROM history WHERE user_id = 9 ORDER BY timestamp ASC
查询的结果被保存到$rows 中,我使用foreach 创建一个数组,其中一些其他值已格式化。我正在尝试将时间戳格式化为英国类型的 24 小时日期时间:dd/mm/yy, HH:MM:SS。
date() 和strftime() 函数我都试过了,如下:
$formatted_datetime = strftime("%d %m %y %H %M %S", $row["timestamp"]);
$formatted_datetime = date("d/m/y, H:i:s", $row["timestamp"]);
这两种情况都会导致以下通知和日期时间输出错误,如01 01 70 00 33 36:
注意:在第 20 行的 /home/ubuntu/workspace/pset7/public/history.php 中遇到格式不正确的数值
我是 PHP 和 MySQL 的新手,到目前为止,我看到的其他问题或文档都没有成功解决执行此转换的问题。我不明白为什么 strftime() 不起作用,也不知道如何正确执行此操作?
【问题讨论】:
-
旁注:由于其限制,我不会使用
TIMESTAMP:“TIMESTAMP 数据类型用于同时包含日期和时间部分的值。TIMESTAMP 的范围为 '1970 -01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。" dev.mysql.com/doc/refman/5.5/en/datetime.html 使用DATETIME" DATETIME 类型用于包含日期和时间部分的值。MySQL 以 'YYYY-MM-DD HH:MM:SS' 格式检索和显示 DATETIME 值。支持的范围是 '1000-01-01 00:00:00 ' 到 '9999-12-31 23:59:59'。" -
@Tiger 那里选择的解决方案似乎......很多。我会从我表上时间戳列的不同类型中受益吗?
-
2038 是一个 UNIX 错误 stackoverflow.com/q/2012589/1415724 - 编辑:您删除了我回复的评论。
-
@Fred-ii- 对不起,我注意到你的“旁注:”一开始就意识到我的评论是不必要的。不过谢谢!
标签: php mysql datetime timestamp formatdatetime