在数据库中,我有列date_of_premiere
(类型: INT)。通过验证,column可以存储三种“类型”的值:
YYYY (例如2016年,没有具体月份和日期的信息)
YYYYMM (例如201511,当没有特定日期的信息时)
YYYYMMDD (例如20151101)
我对排序有问题,因为当我尝试对列进行排序时...
$query = $this->db->query(" SELECT * from table order by `date_of_premiere ");
..。格式为YYYY的记录将始终放在第一位。
当我获取数据时,我可以做一些变通方法...
$dates =[];
while($row = $query->fetch_assoc())
{
if(strlen($row['date_of_premiere']) == 4)
{
$dates[] .= intval($row['date_of_premiere'] .'0000');
} else if (strlen($row['date_of_premiere']) == 6)
{
$dates[] .= intval($row['date_of_premiere'] .'00');
} else
{
$dates[] .= intval($row['date_of_premiere']);
}
}
我可以做asort($dates)
..。
// input values: 2015, 2016, 201511, 20151101
// example output with correct sorting:
Array
(
[1] => 20150000
[0] => 20151100
[3] => 20151101
[2] => 20160000
)
..。但是我很好奇有没有办法只使用mysqli查询来对date_of_premiere
进行排序。
发布于 2015-11-13 02:11:05
您可以按日期列排序,转换为CHAR:
... ORDER BY CAST(date_of_premier AS CHAR(32))
https://stackoverflow.com/questions/33450500
复制相似问题