Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hiển thị kết quả gần nhất với ngày và giờ hiện tại (MySQL &PHP)

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối các bảng trong hai cơ sở dữ liệu bằng SQLAlchemy

  2. Vấn đề chọn thể loại trong MySQL (php)

  3. Chuyển các tham số cho tập lệnh MySQL

  4. Mô hình CakePHP với Giữa các ngày

  5. Cách tạo chỉ mục trên nhiều cột