我无法按照自己的喜好来设置时间戳。我尝试了一切。用日期和时间编码任何东西都会让我的大脑感到困在我的报告表中,数据库中的列'时间戳'给我的结果像2016-05-09 13:41:13。 我试图让它像这样格式化。 05-09-2016 1:41:13 PM。
我的查询是这样的。
$query = "SELECT DATE_ADD(timestamp, INTERVAL 3 HOUR), timestamp, marketer, facility, name, type, phone, email, fax, description, locality, state, zip, latlng FROM leads WHERE marketer = 'Emily'
ORDER BY DATE_ADD(timestamp, INTERVAL 3 HOUR) DESC";
表结果如下:
while( $row = mysqli_fetch_assoc($result) ) {
echo "<tr>";
echo "<td>" . $row['DATE_ADD(timestamp, INTERVAL 3 HOUR)'] . "</td><td>" . $row['marketer'] . "</td><td>" . $row['facility'] . "</td><td>" . $row['name'] . "</td><td>" . $row['type'] . "</td><td>" . $row['phone'] . "</td><td>" . $row['email'] . "</td><td>" . $row['fax'] . "</td><td>" . $row['description'] . "</td><td>" . $row['locality'] . "</td><td>" . $row['state'] . "</td><td>" . $row['zip'] . "</td><td>" . $row['latlng'] . "</td>";
echo "</tr>";
我已经阅读了多个论坛和文档,但需要保持3小时以上的时间间隔,这也是我遇到问题的地方。
UPDATE 我没有得到正确的时间格式,但现在不会有ORDER BY。
$query = "SELECT DATE_FORMAT( timestamp + INTERVAL 3 HOUR, '%m-%d-%Y %r') AS formatted_ts, marketer, facility, name, type, phone, email, fax, description, locality, state, zip, latlng FROM leads WHERE marketer = 'Emily'
ORDER BY DATE_FORMAT( formatted_ts + INTERVAL 3 HOUR, '%m-%d-%Y %r') AS formatted_ts, DESC";
当查询没有结果显示时。当我拿出订单时,它显示正确的格式。
答案 0 :(得分:0)
首先,拥有像'DATE_ADD(timestamp, INTERVAL 3 HOUR)'
这样的PHP数组键,即使它有效,也不是很易读,所以我建议在查询中将它别名化为更明智的东西:
$query = "SELECT DATE_ADD(timestamp, INTERVAL 3 HOUR) as future_date, timestamp, marketer, facility, name, type, phone, email, fax, description, locality, state, zip, latlng FROM leads WHERE marketer = 'Emily'
ORDER BY DATE_ADD(timestamp, INTERVAL 3 HOUR) DESC";
要格式化您喜欢的方式,只需使用PHP DateTime类:
while( $row = mysqli_fetch_assoc($result) ) {
$future_date = new DateTime($row['future_date']);
echo $future_date->format('m-d-Y g:i:sA');
}
答案 1 :(得分:0)
MySQL提供了一个函数DATE_FORMAT
参考:http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format
2016-05-09 13:41:13我试图让它像这样格式化。 05-09-2016 1:41:13 PM。
e.g。
SELECT ...
, timestamp
, DATE_FORMAT( timestamp + INTERVAL 3 HOUR, '%m-%d-%Y %r') AS formatted_ts
, ...
FROM ...
我认为%r
可能会返回两位数小时(前导零)。要获得单个数字,您可能需要指定%l:%i:%s%p
来代替%r
。
MySQL参考手册(上面的链接)提供了可以在格式字符串中使用的说明符的完整列表。
此外,为表达式指定别名将为您提供一个更简单的列名,以便从结果集中引用。
$row['formatted_ts']