mysql - 从日期范围的中间点开始的日期字段排序

标签 mysql sorting sql-order-by

我有一个带有“日期”字段的表“A”。我想进行一个选择查询并按降序排列具有先前日期的行,然后按升序排列具有下一个日期的行,所有这些都在同一个查询中。可能吗?

例如,表“A”:

id    date
---------------------
a     march-20
b     march-21
c     march-22
d     march-23
e     march-24

我想获得以“3 月 22 日”为开始日期的结果:

id    date
---------------------
c     march-22
b     march-21
a     march-20
d     march-23
e     march-24

在一个查询中,因为我用其中两个进行查询而且速度很慢,因为唯一的区别是排序,而且我必须做的连接有点“繁重”。

非常感谢。

最佳答案

你可以使用这样的东西——

SELECT *
FROM test
ORDER BY IF(
    date <= '2012-03-22', 
    DATEDIFF('2000-01-01', date),
    DATEDIFF(date, '2000-01-01') 
);

这是 SQL Fiddle 测试的链接 - http://sqlfiddle.com/#!2/31a3f/13

关于mysql - 从日期范围的中间点开始的日期字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848545/

相关文章:

Python:uMongo 排序

php - 根据sql中的顺序获取行的排名

Oracle 数据库按波兰语字符排序

django - Django按两个字段订购商品,但如果它们为零则忽略它们

MySQL 按整数对 varchar 进行排序

MySQL - 提取 ID 组的日期范围内的最新值

javascript - 二叉搜索树添加方法不对每个输入进行排序 - JavaScript

php - 嵌套 Mysql 表

mysql - mysql 容器中的 docker secret 工作流程

java - 使用方法引用时参数不匹配