So fragen Sie Datum und Uhrzeit in MySQL ab

So fragen Sie Datum und Uhrzeit in MySQL ab

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.

  • Die Funktionen CURDATE und CURRENT_DATE haben dieselbe Funktion und geben den aktuellen Systemdatumswert zurück.
  • Die beiden Funktionen CURTIME und CURRENT_TIME haben die gleiche Funktion und geben den aktuellen Systemzeitwert zurück.
  • Die Funktionen NOW() und SYSDATE() sind identisch und geben die aktuellen Systemdatums- und -zeitwerte zurück.
  • UNIX_TIMESTAMP: Ruft die UNIX-Zeitstempelfunktion ab und gibt eine vorzeichenlose Ganzzahl basierend auf dem UNIX-Zeitstempel zurück.
  • FROM_UNIXTIME konvertiert einen UNIX-Zeitstempel in ein Zeitformat und ist die Umkehrfunktion von UNIX_TIMESTAMP.
  • TO_DAYS() nimmt einen Datumswert und gibt die Anzahl der Tage seit 0 n. Chr. zurück.
  • DAY() Ruft den Tag des angegebenen Datums oder der angegebenen Uhrzeit ab.
  • DATE() Ruft den Tag des angegebenen Datums oder der angegebenen Uhrzeit ab.
  • TIME() Ruft die Uhrzeit des angegebenen Datums oder der angegebenen Uhrzeit ab.
  • MONAT Ruft den Monat des angegebenen Datums ab.
  • WOCHE: Ruft die Wochennummer des Jahres für das angegebene Datum ab.
  • JAHR: Ruft das Jahr ab.
  • QUARTAL Ruft den Quartalswert eines Datums ab.
  • Die Funktionen DATE_ADD und ADDDATE haben die gleiche Funktionalität. Beide fügen einem Datum ein angegebenes Zeitintervall hinzu.
  • Die Funktionen DATE_SUB und SUBDATE haben dieselbe Funktion; beide subtrahieren ein angegebenes Zeitintervall von einem Datum.
  • ADDTIME Zeitadditionsvorgang, addieren Sie die angegebene Zeit zur Originalzeit.
  • SUBTIME Zeitsubtraktionsoperation, subtrahieren Sie die angegebene Zeit von der Originalzeit.
  • DATEDIFF Ruft das Intervall zwischen zwei Daten ab und gibt den Wert von Parameter 1 minus Parameter 2 zurück.
  • DATE_FORMAT formatiert das angegebene Datum und gibt basierend auf den Parametern einen Wert im angegebenen Format zurück.

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:
  • MySql-Abfragezeitraummethode
  • So verwenden Sie die MySQL DATEDIFF-Funktion, um das Zeitintervall zwischen zwei Daten zu ermitteln
  • MySQL-Abfrageanweisung nach Zeit gruppiert
  • MySql-Datenbank-Zeitreihenintervall-Abfragemethode

<<:  Eine kurze Diskussion über die entsprechenden Versionen von node node-sass sass-loader

>>:  Installation von CUDA10.0 und Probleme in Ubuntu

Artikel empfehlen

Analyse der Methode zum Einrichten geplanter Aufgaben in MySQL

Dieser Artikel beschreibt anhand eines Beispiels,...

Tutorial zum Erstellen des File-Sharing-Dienstes Samba unter CentOS6.5

Samba-Dienste: Dieser Inhalt dient als Referenz f...

So installieren Sie MySQL in Docker

Ich habe kürzlich Django bereitgestellt und wollt...

Die neuesten 36 hochwertigen kostenlosen englischen Schriftarten freigegeben

01. Unendlichkeit Schriftart herunterladen 02. Ban...

MySQL in Ubuntu 18.04 installieren (grafisches Tutorial)

Tipp: Die folgenden Vorgänge werden alle mit Root...

XHTML-Tutorial für den Einstieg: Formular-Tags

<br />Formulare sind für Benutzer ein wichti...

Wie Sie die redundanten Felder der Datenbank sinnvoll nutzen

Privot ist die Zwischentabelle von Viele-zu-viele...

Docker startet Redis und legt das Passwort fest

Redis verwendet das Apline-Image (Alps) von Redis...

Der Unterschied zwischen Hash-Modus und Verlaufsmodus im Vue-Router

vue-router hat zwei Modi Hash-Modus Verlaufsmodus...

Detaillierte Erläuterung des Prozesses der Verwendung von GPU in Docker

Inhaltsverzeichnis tf-gpu herunterladen Erstellen...

So verhindern Sie das Flashen von Vue in kleinen Projekten

Zusammenfassung HTML: Element plus V-Umhang CSS: ...

Docker-Installation Tomcat Dubbo-Admin-Instanz-Kenntnisse

1. Laden Sie das Tomcat-Image herunter Docker zie...

Vier Möglichkeiten zum Vergleichen von JavaScript-Objekten

Inhaltsverzeichnis Vorwort Referenzvergleich Manu...