两个其他日期之间的日期,不考虑年份

2023-11-30

我正在寻找类似的人here正在寻找,只有我想使用MySQL。下表是您在我的数据库中找到的内容(简化)。

+------+------+------+------+
| id   | name | first| last |
+------+------+------+------+
|    1 | John | 1020 | 0814 |
|    2 | Ram  | 0827 | 0420 |
|    3 | Jack | 0506 | 0120 |
|    4 | Jill | 0405 | 0220 |
|    5 | Zara | 1201 | 1219 |
+------+------+------+------+

首先,条目必须是随机的,而不是 id 4,我只想要 1 个条目。我解决了这个问题:SELECT * FROM test WHERE id <> 4 ORDER BY rand() LIMIT 1.

在此表中,“first”和“last”列是格式为 mmdd 的日期(均为整数)。所以约翰一年中大部分时间都有空;从10月20日到8月14日。另一方面,Zara 的供货时间很短; 12月1日至12月19日。

我的问题:如何更改查询以仅选择可用的人员?我不能使用“Between”,因为在 John 的例子中,1020 和 0814 之间没有任何内容。

我只是想不通,一定还有其他人有类似的问题......有人有解决方案吗?

亲切的问候


您需要区分两种情况。

  1. When first < last,日期为同一年。然后您可以使用between来匹配日期。

  2. When first > last, 它的意思是last是在明年。在这种情况下,匹配的日期是date >= first OR date <= last.

所以你的 WHERE 子句应该是:

WHERE IF(first < last, @date BETWEEN first AND last,
                       @date >= first OR date <= last)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个其他日期之间的日期,不考虑年份 的相关文章

随机推荐