在MariaDB中按同年日期获取下一条记录订单

问题描述 投票:0回答:1

我有一张有一些假期的桌子,像这样:

id 日期 假期名称
1 2000-10-24 假期1
2 2000-09-18 假期2
3 2000-01-04 假期3

年份总是一样的。我想获取当前日期记录之后的下一条记录。我现在有这样的疑问:

SELECT *
FROM holidays
WHERE date > CURDATE()
ORDER BY date
LIMIT 1

年底前运作良好。但是,如果当前日期是 12 月,下一个日期是 1 月,则查询不起作用,因为年份相同,并且 SQL 会将其视为已通过的记录。我该如何解决这个问题?

sql mariadb
1个回答
0
投票
SELECT *
FROM (
    SELECT *, CONCAT(YEAR(CURRENT_DATE), SUBSTRING(`date` FROM 5)) ndate
    FROM holidays
    UNION ALL
    SELECT *, CONCAT(1 + YEAR(CURRENT_DATE), SUBSTRING(`date` FROM 5))
    FROM holidays
    ) normalized
WHERE ndate > CURRENT_DATE
ORDER BY ndate
LIMIT 1
© www.soinside.com 2019 - 2024. All rights reserved.