Erstellen Sie ein Datumsobjekt aus Tages-, Monats- und Jahresfeldern in MySQL
In einem Datenbankschema mit einer „Datums“-Tabelle, die separate enthält Wenn Sie Felder für „Tag“, „Monat“ und „Jahr“ verwenden, muss für Vergleiche ein Datumsobjekt erstellt werden. In diesem Artikel wird eine Lösung zum Erstellen eines Datumsobjekts aus diesen ganzzahligen Werten beschrieben.
Mit den Funktionen MAKEDATE() und DATE_ADD() kann eine DATETIME aus den Komponenten Jahr, Monat und Tag erstellt werden. MAKEDATE() generiert eine DATETIME, die den ersten Tag des angegebenen Jahres darstellt. Anschließend kann DATE_ADD() angewendet werden, um die Monats- und Tageswerte hinzuzufügen.
Zum Beispiel:
SELECT MAKEDATE(2013, 1); +-------------------+ | MAKEDATE(2013, 1) | +-------------------+ | 2013-01-01 | +-------------------+
So integrieren Sie die Monats- und Tageswerte:
SELECT DATE_ADD(MAKEDATE(2013, 1), INTERVAL (3)-1 MONTH); +---------------------------------------------------+ | DATE_ADD(MAKEDATE(2013, 1), INTERVAL (3)-1 MONTH) | +---------------------------------------------------+ | 2013-03-01 | +---------------------------------------------------+
Die Kombination mehrerer DATE_ADD()-Aufrufe ermöglicht eine präzise Datumskonstruktion:
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 damit eine Datumsbereichsabfrage auszuführen Technik:
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';
Das obige ist der detaillierte Inhalt vonWie kann ich in MySQL ein DATE-Objekt aus separaten Tages-, Monats- und Jahresfeldern erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!