如何在MySQL中转换日期格式?

时间:2018-10-23 06:31:31

标签: php mysql sql date

我在数据库中有一些日期,其日期格式为18-Dec-10

我将日期存储在数组中

    $my_array=array();
        $result ="SELECT * FROM table WHERE id='$id'  ORDER BY date";
            $ftc = mysqli_query($conn,$result)or die(mysqli_error($conn));
            while($row = mysqli_fetch_array($ftc)) {    
                    $my_array['arrays'][]  = $row['date'];
                    }
print_r(my_array);

我得到了类似(5-Dec-11,7-Jan-12,8-Apr-10,10-May-2010)的输出

我无法按顺序获得此商品 如何将其更改为sql date以及如何按顺序获取?

1 个答案:

答案 0 :(得分:3)

您似乎将日期以 text 的格式存储为非标准格式,例如18-Dec-10。要解决此问题,您可以尝试使用STR_TO_DATE对转换为真实日期的文本日期进行排序:

SELECT *
FROM table
WHERE id = '$id'
ORDER BY STR_TO_DATE(date, '%d-%b-%y');    -- assuming you want ascending order

请注意,理想情况下,您应该将日期信息存储在适当的日期列中,这样可以避免调用STR_TO_DATE。使用文本日期可能会减慢您的速度,并成为真正的性能杀手。

此外,作为附带说明,您应该考虑在PHP代码中使用准备好的语句。也就是说,运行类似于以下内容的查询:

SELECT *
FROM table
WHERE id = ?
ORDER BY STR_TO_DATE(date, '%d-%b-%y');

然后,以一种安全的方式将id值绑定到该语句,从而避免了SQL注入的机会。