我在数据库中有一些日期,其日期格式为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以及如何按顺序获取?
答案 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注入的机会。