Php 两个其他日期之间的日期,不考虑年份
我正在寻找一个像那个人一样的东西,只是我想使用MySQL。下表是您可以在我的数据库中找到的(简化) 首先,条目必须是随机的,而不是id 4,我只想要一个条目。我算出了:Php 两个其他日期之间的日期,不考虑年份,php,mysql,date,between,Php,Mysql,Date,Between,我正在寻找一个像那个人一样的东西,只是我想使用MySQL。下表是您可以在我的数据库中找到的(简化) 首先,条目必须是随机的,而不是id 4,我只想要一个条目。我算出了:SELECT*FROM test WHERE id 4 ORDER BY rand()LIMIT 1 在该表中,“first”和“last”列是格式为mmdd的日期(两个整数)。因此,约翰一年中大部分时间都在工作;从10月20日到8月14日。另一方面,Zara只在一小段时间内可用;12月1日至12月19日 我的问题:如何将查询更改
SELECT*FROM test WHERE id 4 ORDER BY rand()LIMIT 1
在该表中,“first”和“last”列是格式为mmdd的日期(两个整数)。因此,约翰一年中大部分时间都在工作;从10月20日到8月14日。另一方面,Zara只在一小段时间内可用;12月1日至12月19日
我的问题:如何将查询更改为仅选择可用人员?我不能用'between',因为在约翰的例子中,1020和0814之间没有任何东西
我就是不明白,肯定还有其他人也有类似的问题。。。有人有解决办法吗
亲切问候您需要区分两种情况
第一次
时,日期在同一年。然后,您可以在之间使用来匹配日期
first>last
时,表示last
在下一年。在这种情况下,匹配的日期是date>=first或date=first或date,因此first
和last
存储为整数而不是日期?为什么第一个值在最后一个值之后?在这种情况下,您如何知道搜索first>last或last>first?我还假设您的意思是10月20日。如果您首先将“日期”转换为实际的MySQLDATE
值,则可以使用BETWEEN
。您可以使用:STR\u TO\u DATE(第一个,'%m%d')
。但问题仍然存在@AndyG notes@GreatBigBore最后加10000是不够的。在约翰的例子中,0101应该考虑在1020和0814之间,但它不是在1020和10814之间。特例不应该是最后一个和第一个之间的,因为在特例中最后一个
。@GreatBigBore在1020和0814之间没有数字。不过,我确实把比较的方向弄错了。我已经修好了,好的。我想你是想把调整后的年份值附加到日期上。@AnyG&Tomas Creemers:我想到了这一点,但据我所知str_to_date()只格式化日期。。。然后我还要加上一年,因为没有只保存mmdd的字段类型。。。就我而言,从理论上讲,这种情况一直持续到现在,已经没有一年了@因此,当使用php时,我的查询将变成:SELECT*FROM test WHERE id 4和(IF(first=first或$date
+------+------+------+------+
| id | name | first| last |
+------+------+------+------+
| 1 | John | 1020 | 0814 |
| 2 | Ram | 0827 | 0420 |
| 3 | Jack | 0506 | 0120 |
| 4 | Jill | 0405 | 0220 |
| 5 | Zara | 1201 | 1219 |
+------+------+------+------+
WHERE IF(first < last, @date BETWEEN first AND last,
@date >= first OR date <= last)