无法获取格式化时间戳

时间:2016-05-11 03:49:13

标签: php html mysql

我无法按照自己的喜好来设置时间戳。我尝试了一切。用日期和时间编码任何东西都会让我的大脑感到困在我的报告表中,数据库中的列'时间戳'给我的结果像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";

当查询没有结果显示时。当我拿出订单时,它显示正确的格式。

2 个答案:

答案 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']  
相关问题