Tôi sẽ bỏ qua việc sử dụng các phương thức ngày / giờ trong PHP và dựa vào MySQL để đưa ra một truy vấn giống như
SELECT * FROM table_name
WHERE date > CURRENT_DATE
OR (
date = CURRENT_DATE
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1
OR đảm bảo rằng nó nhận được các bản ghi chính xác, nếu không phần TIME sẽ chặn, tức là kết quả lúc 03:00 ngày hôm sau không xuất hiện nếu thời gian hiện tại là 06:00
Tôi thấy bạn đang sử dụng các giá trị dấu thời gian ở đó để bạn luôn có thể chuyển sang số ngày trong PHP thay cho CURRENT_DATE. Điều này sẽ cung cấp một tập lệnh cuối cùng của
$timestamp_now = strtotime(date('d-m-Y')); //Creates a timestamp of the currect date
$sql = mysql_query('SELECT * FROM table_name
WHERE date > '.$timestamp_now.'
OR (
date = '.$timestamp_now.'
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1') or die(mysql_error());
$data = mysql_fetch_array($sql);
Tôi khuyên bạn nên xem xét việc thay đổi cơ sở dữ liệu nếu có thể để lưu trữ chỉ dưới dạng trường MySQL DATETIME, vì sau đó bạn có thể thay đổi truy vấn này thành WHERE datetime > NOW()
, nhưng điều đó hoàn toàn phụ thuộc vào bạn. Chỉ luôn thấy MySQL xử lý ngày tháng hợp lý hơn PHP.