我有一个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
:
注意:在/home/ubuntu/workspace/pset7/public/history.php的第20行遇到了一个非格式良好的数值。
我刚接触PHP和MySQL,并且迄今为止,我看到的其他问题或文档都没有成功地解决执行此转换的问题。我不明白为什么strftime()
不起作用,也不知道如何正确执行此操作?
TIMESTAMP
:“TIMESTAMP数据类型用于包含日期和时间部分的值。 TIMESTAMP的范围为“1970-01-01 00:00:01”UTC到“2038-01-19 03:14:07”UTC。”https://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”。 - Funk Forty NinerCURRENT_TIMESTAMP
作为DATETIME默认值):CREATE TRIGGER <triggername> BEFORE INSERT ON <tablename> FOR EACH ROW SET NEW.<datetimefield> = NOW()
。 - Toby