Vorwort: Bei der Projektentwicklung werden in einigen Feldern von Geschäftstabellen häufig Datums- und Uhrzeittypen verwendet. Auch nachfolgende Abfragen zu solchen Feldern sind erforderlich. Für Datums- und Zeitabfragen gibt es viele Anforderungen. Dieser Artikel beschreibt kurz die standardisierte Abfragemethode für Datums- und Zeitfelder. 1. Übersicht über Datums- und Zeittypen Die von MySQL unterstützten Datums- und Zeittypen sind DATETIME, TIMESTAMP, DATE, TIME und YEAR. Der Vergleich dieser Typen ist wie folgt: Wählen Sie bei der Auswahl der Datums- und Uhrzeitfeldtypen einfach den passenden Typ basierend auf Ihren Speicheranforderungen aus. 2. Datums- und zeitbezogene Funktionen Es gibt viele Funktionen zur Verarbeitung von Datums- und Zeitfeldern, von denen einige häufig in Abfragen verwendet werden. Im Folgenden wird die Verwendung einiger verwandter Funktionen vorgestellt.
Einige Anwendungsbeispiele: mysql> wählen Sie AKTUELLES_DATUM, AKTUELLE_ZEIT, JETZT(); +--------------+--------------+---------------------+ | AKTUELLES DATUM | AKTUELLE UHRZEIT | JETZT() | +--------------+--------------+---------------------+ | 03.06.2020 | 15:09:37 | 03.06.2020 15:09:37 | +--------------+--------------+---------------------+ mysql> wähle TO_DAYS('2020-06-03 15:09:37'), HEUTE('2020-06-03')-HEUTE('2020-06-01'); +---------------------------------+---------------------------------------------------------+ | HEUTE('2020-06-03 15:09:37') | HEUTE('2020-06-03')-HEUTE('2020-06-01') | +---------------------------------+---------------------------------------------------------+ | 737944 | 2 | +---------------------------------+---------------------------------------------------------+ mysql> wähle MONAT('2020-06-03'),WOCHE('2020-06-03'),JAHR('2020-06-03'); +---------------------+--------------------+--------------------+ | MONAT('2020-06-03') | WOCHE('2020-06-03') | JAHR('2020-06-03') | +---------------------+--------------------+--------------------+ | 6 | 22 | 2020 | +---------------------+--------------------+--------------------+ # DATEDIFF(date1, date2) gibt die Anzahl der Tage zwischen der Startzeit date1 und der Endzeit date2 zurückmysql> SELECT DATEDIFF('2017-11-30','2017-11-29') AS COL1, -> DATEDIFF('2017-11-30','2017-12-15') AS col2; +------+------+ | Spalte1 | Spalte2 | +------+------+ | 1 | -15 | +------+------+ 3. Standardisierte Abfrage von Datums- und Zeitfeldern Die oben genannten Inhalte sind alle für unsere Abfrageanforderungen vorbereitet. In Projektanforderungen werden Filterabfragen häufig basierend auf Datums- oder Zeitbedingungen durchgeführt. Manchmal variieren solche Anforderungen. Lernen wir, wie man Abfragen für Datums- und Zeitfelder schreibt. Um die Abfrage präziser zu gestalten, sollten die Daten zunächst entsprechend den Vorgaben eingefügt werden. Beispielsweise werden für die Jahresangabe vier Ziffern verwendet, Tag und Monat müssen in einem angemessenen Bereich liegen usw. Zur Vereinfachung des Tests erstellen wir eine Tabelle und fügen einige Daten ein. Tabelle „t_date“ erstellen ( `increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primärschlüssel automatisch inkrementieren', `year_col` JAHR NICHT NULL KOMMENTAR 'Jahr', `date_col` Datum NICHT NULL KOMMENTAR 'Datum', `time_col` Zeit NICHT NULL KOMMENTAR 'Zeit', `dt_col` datetime NICHT NULL KOMMENTAR 'datetime time', `create_time` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP KOMMENTAR 'Erstellungszeit', PRIMÄRSCHLÜSSEL (`increment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Zeittesttabelle'; # Wählen Sie das aktuelle Datum oder die aktuelle Uhrzeit für Datum und Uhrzeit aus INSERT INTO t_date (year_col,date_col,time_col,dt_col,create_time) VALUES (Jahr(jetzt()),DATUM(JETZT()),Uhrzeit(jetzt()),JETZT(),JETZT()); # Ein bestimmtes Datum oder eine bestimmte Uhrzeit einfügen INSERT INTO t_date ( `year_col`, `date_col`, `time_col`, `dt_col`, `create_time` ) WERTE ( 2020, '2020-06-03', '09:00:00', '2020-06-03 10:04:04', '2020-06-03 10:04:04' ), ( 2020, '2020-05-10', '18:00:00', '2020-05-10 16:00:00', '2020-05-10 16:00:00' ), ( 2019, '2019-10-03', '16:04:04', '2019-10-03 16:00:00', '2019-10-03 16:00:00' ), ( 2018, '2018-06-03', '16:04:04', '2018-06-03 16:00:00', '2018-06-03 16:00:00' ), ( 2000, '2000-06-03', '16:04:04', '2000-06-03 08:00:00', '2000-06-03 08:00:00' ), ( 2008, '2008-06-03', '16:04:04', '2008-06-03 08:00:00', '2008-06-03 08:00:00' ), ( 1980, '1980-06-03', '16:04:04', '1980-06-03 08:00:00', '1980-06-03 08:00:00' ); Lassen Sie uns anhand der Daten in der obigen Testtabelle lernen, wie einige gängige Abfrageanweisungen geschrieben werden: Suche nach Datum oder Uhrzeit usw. Wählen Sie * aus t_date, wobei year_col = 2020; Wählen Sie * aus t_date, wobei date_col = „2020-06-03“; Wählen Sie * aus t_date, wobei dt_col = „2020-06-03 16:04:04“; Suche nach Datum oder Zeitbereich Wählen Sie * aus t_date, wobei date_col > „01.01.2018“ ist. Wählen Sie * aus t_date, wobei dt_col >= '2020-05-01 00:00:00' und dt_col < '2020-05-31 23:59:59'; Wählen Sie * aus t_date, wobei dt_col zwischen „2020-05-01 00:00:00“ und „2020-05-31 23:59:59“ liegt. Daten dieses Monats abfragen # Fragen Sie die Daten von create_time in diesem Monat ab. select * from t_date where DATE_FORMAT(create_time, '%Y-%m' ) = DATE_FORMAT( CURDATE( ) , '%Y-%m' ); Abfrage der Daten der letzten Tage # Abfrage der Daten der letzten 7 Tage oder 30 Tage basierend auf date_col SELECT * FROM t_date where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(date_col); Wählen Sie * aus t_date, wobei DATE_SUB (CURDATE (), INTERVAL 30 DAY) <= date (date_col); Andere Arten der Abfrageerstellung # Heutige Daten abfragen SELECT * FROM t_date WHERE TO_DAYS(create_time) = TO_DAYS(NOW()); # Daten eines bestimmten Monats abfragen SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y-%m')='2020-06'; # Daten eines bestimmten Jahres abfragen SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y') = 2020; Wählen Sie * aus t_date, wobei YEAR(Erstellungszeit) = 2020 ist. # Daten nach Datumsbereich abfragen und sortieren SELECT * FROM t_date WHERE DATE_FORMAT(create_time, '%Y') BETWEEN '2018' AND '2020' ORDER BY create_time DESC; Zusammenfassen: Dieser Artikel beginnt mit den Datums- und Uhrzeitfeldern, beschreibt dann die Verwendung zugehöriger Funktionen und listet abschließend einige häufig verwendete Abfragemethoden auf. Ich hoffe, dieser Inhalt ist für Sie hilfreich. Im wirklichen Leben können einige Abfragen komplexer sein. Insbesondere bei großen Datenmengen sind Abfragen, die auf Zeitfeldern basieren, oft langsam. In diesem Fall sollten Sie auch auf die Erstellung von Indizes achten. Am besten konvertieren Sie das Zeitfeld in einen Zeitstempel, da ganzzahlige Abfragen und Filter schneller sind. Es ist auch eine gute Idee, Sie daran zu erinnern, keine Berechnungen mit Datums- und Zeitfeldern durchzuführen und keine Dinge auf Datenbankebene zu tun, die vom Programm erledigt werden können. Oben finden Sie Einzelheiten zur Abfrage von Datum und Uhrzeit in MySQL. Weitere Informationen zur Abfrage von Datum und Uhrzeit in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Eine kurze Diskussion über die entsprechenden Versionen von node node-sass sass-loader
>>: Installation von CUDA10.0 und Probleme in Ubuntu
Dieser Artikel beschreibt anhand eines Beispiels,...
Samba-Dienste: Dieser Inhalt dient als Referenz f...
Ich habe kürzlich Django bereitgestellt und wollt...
01. Unendlichkeit Schriftart herunterladen 02. Ban...
Tipp: Die folgenden Vorgänge werden alle mit Root...
<br />Formulare sind für Benutzer ein wichti...
Privot ist die Zwischentabelle von Viele-zu-viele...
Redis verwendet das Apline-Image (Alps) von Redis...
vue-router hat zwei Modi Hash-Modus Verlaufsmodus...
Inhaltsverzeichnis tf-gpu herunterladen Erstellen...
Zusammenfassung HTML: Element plus V-Umhang CSS: ...
1. Laden Sie das Tomcat-Image herunter Docker zie...
Inhaltsverzeichnis Vorwort Referenzvergleich Manu...
Die Befehlszeile mysqld –skip-grant-tables kann i...
Inhaltsverzeichnis 1. Elementversatzserie 2. Elem...