Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen Sie Datum aus den Feldern Tag, Monat, Jahr in MySQL

Wenn Sie ganzzahlige Werte für Jahr, Monat und Tag haben, können Sie eine DATETIME erstellen, indem Sie MAKEDATE() und DATE_ADD() kombinieren. MAKEDATE() mit einem konstanten Tag von 1 gibt Ihnen eine DATETIME für den ersten Tag des angegebenen Jahres, und dann können Sie mit DATE_ADD() den Monat und den Tag hinzufügen:

mysql> SELECT MAKEDATE(2013, 1);
+-------------------+
| MAKEDATE(2013, 1) |
+-------------------+
| 2013-01-01        |
+-------------------+

mysql> SELECT DATE_ADD(MAKEDATE(2013, 1), INTERVAL (3)-1 MONTH);
+---------------------------------------------------+
| DATE_ADD(MAKEDATE(2013, 1), INTERVAL (3)-1 MONTH) |
+---------------------------------------------------+
| 2013-03-01                                        |
+---------------------------------------------------+

mysql> SELECT DATE_ADD(DATE_ADD(MAKEDATE(2013, 1), INTERVAL (3)-1 MONTH), INTERVAL (11)-1 DAY);
| DATE_ADD(DATE_ADD(MAKEDATE(2013, 1), INTERVAL (3)-1 MONTH), INTERVAL (11)-1 DAY) |
+----------------------------------------------------------------------------------+
| 2013-03-11                                                                       |
+----------------------------------------------------------------------------------+

Um die Frage des OP zu beantworten:

SELECT * FROM `date`
WHERE DATE_ADD(DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH), INTERVAL (day)-1 DAY)
BETWEEN '2013-01-01' AND '2014-01-01';