php - 按部分列文本对查询结果进行排序

标签 php mysql joomla

我有以下查询:

SELECT t.*, c.alias as calias FROM jos2_tabs t
        JOIN jos2_tabs_category c on c.id=t.category_id
        WHERE (category_id = 43
                    OR category_id in (select id from jos2_tabs_category WHERE parentid = 43)
                    ) AND state=1 
        ORDER BY ordering2 

它按预期工作。但是在“选项卡”表中,我有“术语”列,其中包含文本格式的日期(每个都在新行中)。示例:

18.05.2013-21.07.2013
22.05.2013-20.06.2013
01.06.2013-25.08.2013
15.06.2013-25.08.2013
06.07.2013-29.09.2013
20.07.2013-29.09.2013
17.08.2013-10.11.2013
31.08.2013-10.11.2013
03.09.2013-30.09.2013

我必须做的是修改查询以按“术语”列中的日期对元素进行排序。所以我想获得最接近当前时间的行(只能是第一行(第一个日期)。有什么想法可以实现吗?

我需要将单元格“terms”中的第一行拆分为 from->to 对,然后按“from dates”对所有行进行排序

最佳答案

您可以将 Order by 与 STR_TO_DATE() 混合使用和 SUBSTR()

使用方法:

SELECT t.*, c.alias as calias FROM jos2_tabs t
JOIN jos2_tabs_category c on c.id=t.category_id
WHERE (category_id = 43
            OR category_id in (select id from jos2_tabs_category WHERE parentid = 43)
            ) AND state=1 
ORDER BY STR_TO_DATE(SUBSTR(terms, 0, 10),'%d.%m.%Y') ASC

关于php - 按部分列文本对查询结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16734492/

相关文章:

来自 mysql 数据的 PHP 数组 - x-editable bootstrap

php - 识别域之间的访问者

mysql - 如何连接两个sql子查询

joomla - 多语言 Joomla : Language selection remains empty.

php - 服务器到服务器的电子邮件传输安全吗?

javascript - 没有div或以某种方式放大图像

php - 如何检查 MySQL 中是否设置了位

php - 实现取消订阅功能的正确方法

MySQL最大字符长度存储

php - 可能的 PDOException 错误(MySQL 5)?