Erstellen eines Datums aus einzelnen Tages-, Monats- und Jahresfeldern in MySQL
In Datenbankanwendungen besteht häufig die Notwendigkeit, Datumsangaben daraus zu erstellen Separate Felder für Tag, Monat und Jahr zum Vergleich oder für andere Verarbeitungen. Dies wird besonders relevant, wenn das Datenbankschema von einem früheren Design geerbt wird, bei dem Datumskomponenten auf nicht standardmäßige Weise gespeichert wurden.
Problemstellung (überarbeitet)
Diese Frage bezieht sich auf die Erstellung eines Datumsobjekts in SQL aus einer Tabelle mit einzelnen Feldern für „Tag“, „Monat“ und „Jahr“ und nicht aus einem konsolidierten Datumsfeld. Das Ziel besteht darin, diese Daten mithilfe der BETWEEN-Klausel mit Benutzereingabebereichen zu vergleichen.
Datenbankschema
Das Folgende ist das bereitgestellte Schema für die Tabelle „Datum“:
CREATE TABLE IF NOT EXISTS `date` ( `deposition_id` varchar(11) NOT NULL default '', `day` int(2) default NULL, `month` int(2) default NULL, `year` int(4) default NULL, PRIMARY KEY (`deposition_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Lösung
Um daraus ein Datumsobjekt zu erstellen Für die einzelnen Komponenten kann die folgende SQL-Logik verwendet werden:
Beispielabfrage
Um alle Zeilen in der Tabelle „Datum“ auszuwählen, in die das konstruierte Datum fällt innerhalb eines bestimmten Bereichs:
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';
Diese Abfrage gibt alle Zeilen zurück, in denen das aus den einzelnen Feldern zusammengesetzte Datum zwischen den beiden angegebenen liegt Termine.
Das obige ist der detaillierte Inhalt vonWie konstruiere ich in MySQL ein Datum aus separaten Tages-, Monats- und Jahresfeldern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!