sql >> Databáze >  >> RDS >> Mysql

PHP a MySQL:Porovnání měsíce a dne s dynamickým rokem

Můžete použít MySQL date_format funkce při kontrole data.

Například:

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

Takže to můžete zkontrolovat s jednoduchým intervalem:dnes je 0518 a mezi 2. únorem a 31. květnem:

Úplný příklad:

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)

Ukázkový dotaz:

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)

UPRAVIT :

Přečtěte si svůj komentář k odpovědi @FelipeDuarte... Pro období od 10.1. (1. října) do 1.2. (1. února) musíme zvážit nový rok...

Můžete podvádět rozdělením období na dvě části:10/01 až 12/31 a 01/01 až 02/01



  1. PG::UndefinedTable:ERROR:vztah neexistuje se správným pojmenováním a konvencí Rails

  2. Rozšíření použití DBCC CLONEDATABASE

  3. Návrh MySQL s dynamickým počtem polí

  4. MySQL-GROUP a COUNT podle data