首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对多种日期格式进行排序

对多种日期格式进行排序
EN

Stack Overflow用户
提问于 2015-10-31 18:24:49
回答 1查看 141关注 0票数 2

在数据库中,我有列date_of_premiere (类型: INT)。通过验证,column可以存储三种“类型”的值:

YYYY (例如2016年,没有具体月份和日期的信息)

YYYYMM (例如201511,当没有特定日期的信息时)

YYYYMMDD (例如20151101)

我对排序有问题,因为当我尝试对列进行排序时...

代码语言:javascript
运行
复制
$query = $this->db->query(" SELECT * from table order by `date_of_premiere ");

..。格式为YYYY的记录将始终放在第一位。

当我获取数据时,我可以做一些变通方法...

代码语言:javascript
运行
复制
$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)..。

代码语言:javascript
运行
复制
// input values: 2015, 2016, 201511, 20151101
// example output with correct sorting:
Array
(
    [1] => 20150000
    [0] => 20151100
    [3] => 20151101
    [2] => 20160000
)

..。但是我很好奇有没有办法只使用mysqli查询来对date_of_premiere进行排序。

EN

回答 1

Stack Overflow用户

发布于 2015-11-13 02:11:05

您可以按日期列排序,转换为CHAR:

代码语言:javascript
运行
复制
... ORDER BY CAST(date_of_premier AS CHAR(32))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33450500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档