Heim >Datenbank >MySQL-Tutorial >Wie konstruiere ich in MySQL ein Datum aus separaten Tages-, Monats- und Jahresfeldern?

Wie konstruiere ich in MySQL ein Datum aus separaten Tages-, Monats- und Jahresfeldern?

Linda Hamilton
Linda HamiltonOriginal
2024-12-25 07:46:54299Durchsuche

How to Construct a Date in MySQL from Separate Day, Month, and Year Fields?

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:

  1. Konstruieren Sie ein Datum aus Jahr und Monat: Verwenden Sie die Funktion MAKEDATE() mit einem konstanten Tag von 1, um eine DATETIME zu erhalten Stellt den ersten Tag des angegebenen Jahres und Monats dar.
  2. Datum mit Monat und Tag anpassen: Wenden Sie die Funktion DATE_ADD() an Fügen Sie die Monats- und Tageswerte entsprechend zur anfänglichen Datums-/Uhrzeit hinzu.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn