php - 两个其他日期之间的日期,忽略年份

标签 php mysql date between

我正在寻找像 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 .

在此表中,“第一个”和“最后一个”列是格式化为 mmdd(均为整数)的日期。所以约翰一年中的大部分时间都可以使用;从10月20日到8月14日。另一方面,Zara 只在很短的时间内有售; 12 月 1 日至 12 月 19 日。

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

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

亲切的问候

最佳答案

你需要区分两种情况。

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

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

所以你的 WHERE 子句应该是:

WHERE IF(first < last, @date BETWEEN first AND last,
                       @date >= first OR date <= last)

关于php - 两个其他日期之间的日期,忽略年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18294786/

相关文章:

PHP for循环插入SQL

r - 如何将时间格式从 1730 更改为 17 :30:00 in R?

php - CodeIgniter session 与 PHP session

php解析错误 explode

PHP 博客条目未提交到 MySQL 数据库

php - MySQL Select 查询来拓宽表优化

php - PHP 中的生日倒计时计算器

javascript - 如何在 Javascript 中将 UTC 日期构造为对象而不是数字?

php - 如何组织 JSON 以加快信息访问速度?

php - 远程MySQL连接超时