在PHP / MySQL查询中格式化日期

时间:2013-08-14 18:34:25

标签: php mysql json

我有一个使用MySQL和PDO的PHP / JSON脚本,现在数据运行良好。 代码:

 <?php
header('Content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");

$dsn = "mysql:host=localhost;dbname=myradio";
$username=test;
$password=test;
$pdo = new PDO($dsn, $username, $password);
$rows = array();
    $stmt = $pdo->prepare("SELECT *, DATE_FORMAT(start, '%d%M') FROM mystation");
    $stmt->execute();
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo '{"success":true,"error":"","data":{"schedule":';
echo json_encode($rows);
echo "]}}";
?>

我如何使用DATE_FORMAT将我的字段开始和结束(都存储为DATETIME)显示如下: 16/08/2013 00:00:00

等?

正确显示数据,但我不太确定如何让DATE_FORMAT正常工作。

2 个答案:

答案 0 :(得分:4)

将正确的格式字符串传递给查询中的DATE_FORMAT

SELECT 
    *, 
    DATE_FORMAT(start, '%d/%m/%Y %H:%i:%s') AS the_date 
FROM mystation

然后,当您遍历行时,格式化日期将在the_date列中显示。

下面的Marty McVry建议的以下格式化字符串也有效:

DATE_FORMAT(start, '%d/%m/%Y %T')

参考:DATE_FORMAT on MySQL manual entry

答案 1 :(得分:0)

除了下面的解决方案之外, 正确:当处理数据时 - 在您的情况下使用REST-API或其他东西传递日期 - 您通常不希望应用格式化。您应该尽可能返回AS RAW数据,以允许最终处理应用程序根据需要格式化数据。

使用普通格式'2013-08-14 20:45:00 GMT + 2'('年 - 月 - 日时:分:第二时区'),以便每个客户能够重构以适当方式检索的数据。

数据应该转换片刻它会提前发送给用户 - 不久之前。

(在日期的原始数据格式上,您可以执行<>equals比较或排序操作,而不会出错。)