我將日期和時間分別存儲在表的不同列中。所以我試圖檢查當前時間是否比數據庫中的時間早或晚 30 分鐘。假設我有一個這樣存儲的日期和時間列表:日期 ? ? ? | ? ? ? 時間2020-05-29 00:10:002020-05-29 09:00:00如果我當前的日期2020-05-28和時間是23:50:00,最近的日期和時間應該是2020-05-29, 00:10:00范圍應該從的第一行2020-05-28, 23:35:00 - 2020-05-29, 00:35:00我已經完成了代碼,但它只能檢測同一日期的時間范圍。$currentTime = time();$minTime = date("H:i", strtotime('-30 minutes', $currentTime));$maxTime = date("H:i", strtotime('+30 minutes', $currentTime));// My query to get the list of date and time on one specific date and populate to $datetimeArr// $sql = 'SELECT id, date, time FROM table WHERE date = "'.date('Y-m-d').'"';$datetimeArr = [ [ 'date' => '2020-05-29', 'time' => '00:10:00' ], [ 'date' => '2020-05-29', 'time' => '09:00:00' ],];foreach ($datetimeArr as $k => $row) { if($row['time'] >= $minTime && $row['time'] <= $maxTime) { $nearestDate = $row; continue; }}所以問題是,如果是新一天之前或之后的 30 分鐘,我將無法正確獲取范圍。
1 回答

UYOU
TA貢獻1878條經驗 獲得超4個贊
為什么不使用獲取數據的 mysql 查詢來執行此操作?這比用 php foreaches 做要簡單得多。
SELECT * FROM `TABLE` WHERE `time` > DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND `time` < DATE_ADD(NOW(), INTERVAL 30 MINUTE)
為您的案例更新一個古怪的解決方案:
SELECT * from TableName where CONCAT(date, ' ', time) between DATE_SUB(NOW(), INTERVAL 30 MINUTE) and DATE_ADD(NOW(), INTERVAL 30 MINUTE)
這會將日期和時間字段連接成一個日期時間。
- 1 回答
- 0 關注
- 121 瀏覽
添加回答
舉報
0/150
提交
取消