从MYSQL中的当月开始按日期排序

时间:2016-06-20 11:52:47

标签: mysql

我在 mysql 表中有一个日期类型列。我需要从当月开始独立于年份订购日期。

tblEvent

event_date
__________
2016-01-07
2016-01-13
2016-05-16
2016-05-22
2016-05-30
2018-06-21
2016-06-23
2016-07-14
2018-08-16
2016-10-20
1990-12-09
2016-12-15

因为当前月份是6月,所需的输出应为:

event_date
__________
2018-06-21
2016-06-23
2016-07-14
2018-08-16
2016-10-20
1990-12-09
2016-12-15
2016-01-07
2016-01-13
2016-05-16
2016-05-22
2016-05-30
  1. 订单必须从当月开始
  2. 例如,如果当前月份为 11月 ,则订单必须为 11月,12月,1月,2月,3月,.....,10月
  3. 各个日期也必须按照asc顺序
  4. 订单必须独立于年份(即无论哪一年都有 在日期)

3 个答案:

答案 0 :(得分:3)

SELECT event_date
FROM tblEvent
ORDER BY
 IF(MONTH(event_date) < MONTH(NOW()), MONTH(event_date) + 12, MONTH(event_date)),
 DAY(event_date)

的信息:

答案 1 :(得分:1)

如果我理解你的问题,那么灵魂就像这样:

select
  event_date
from
  tblevent
order by
  (12+month(event_date)-month(current_date)) mod 12,
  day(event_date)

此查询将对从当前月份开始的所有行进行排序,按月和日排序,而不考虑年份。请查看工作小提琴here

答案 2 :(得分:0)

我只是尝试下面的查询,获取所有记录,从desc顺序的当前月份开始。喜欢: - 第6,5,4,3,2,1个月

BKPT

你可以尝试这种方式,希望这会有所帮助。