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

PHP và MySQL:So sánh tháng và ngày với năm động

Bạn có thể sử dụng MySQL date_format chức năng khi kiểm tra ngày.

Ví dụ:

select date_format('2016-05-18', '%m%d');
+-----------------------------------+
| date_format('2016-05-18', '%m%d') |
+-----------------------------------+
| 0518                              |
+-----------------------------------+
1 row in set (0,01 sec)

Vì vậy, bạn chỉ có thể kiểm tra với khoảng thời gian đơn giản:hôm nay là 0518 và diễn ra vào ngày 2 tháng 2 và ngày 31 tháng 5:

Toàn bộ ví dụ:

desc mytable;
+-----------+---------+------+-----+---------+-------+
| Field     | Type    | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| date_from | char(4) | YES  |     | NULL    |       |
| date_to   | char(4) | YES  |     | NULL    |       |
| price     | int(11) | YES  |     | NULL    |       |
+-----------+---------+------+-----+---------+-------+
3 rows in set (0,00 sec)

select * from mytable;
+-----------+---------+-------+
| date_from | date_to | price |
+-----------+---------+-------+
| 0901      | 0930    |   100 |
| 1001      | 0201    |    80 |
| 0202      | 0531    |   100 |
| 0601      | 0701    |   120 |
+-----------+---------+-------+
4 rows in set (0,00 sec)

Truy vấn mẫu:

select price, date_from, date_to from mytable where date_format(now(), '%m%d') between date_from and date_to;
+-------+-----------+---------+
| price | date_from | date_to |
+-------+-----------+---------+
|   100 | 0202      | 0531    |
+-------+-----------+---------+
1 row in set (0,01 sec)

CHỈNH SỬA :

Đọc nhận xét của bạn về câu trả lời của @ FelipeDuarte ... Trong khoảng thời gian từ 10/01 (01/10) đến 02/01 (01/02), chúng ta cần xem xét năm mới ...

Bạn có thể gian lận bằng cách chia khoảng thời gian thành hai ngày:10/01 đến 31/12 và 01/01 đến 02/01



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tự động triển khai MySQL hoặc Cụm Postgres của bạn từ bản sao lưu

  2. Tại sao MySQL thực thi lại trả về Không?

  3. PHP / PDO:SQl để tìm hàng chứa giá trị chuỗi

  4. phiên đăng nhập bị hủy sau khi làm mới

  5. Khởi tạo PHP PDO không thành công do cổng đôi - Không có PDOException:SQLSTATE [HY000] [2002]