我正在尋找像here正在尋找的人,只有我想使用MySQL。下表是您在我的數據庫中找到的內容(簡化)。2個其他日期之間的日期,不考慮年份
+------+------+------+------+
| 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日。
我的問題:如何將我的查詢更改爲僅選擇可用人員?我不能使用「之間」,因爲在約翰的情況下,1020和0814之間沒有任何東西。
我只是無法弄清楚,必須有其他人有類似的問題......有沒有人一個辦法?
親切的問候
所以'first'和'last'被存儲爲整數而非日期?爲什麼在last-values之後有一些第一個值?在這種情況下,您如何知道如何搜索first> last或last> first?我還假定你的意思是10月20日。 –
如果您首先將「日期」轉換爲實際的MySQL「DATE」值,那麼您可以使用'BETWEEN'。你可以用['STR_TO_DATE()'](https://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_str-to-date):'STR_TO_DATE (首先,'%m%d')'。 @AndyG筆記的問題依然存在。 –
@GreatBigBore將10000添加到最後是不夠的。在約翰的情況下,0101應該在1020年和0814年之間考慮,但它不在1020年到10814年之間。 – Barmar