So verwenden Sie Zeit als Beurteilungsbedingung in MySQL

So verwenden Sie Zeit als Beurteilungsbedingung in MySQL

Hintergrund: Während des Entwicklungsprozesses müssen wir häufig Daten basierend auf der Zeit als Beurteilungsbedingung abfragen, z. B.: der aktuelle Monat, der aktuelle Tag, die aktuelle Stunde, die nächsten Tage ...

1. Aktueller Monat

Um dies zu erreichen, müssen wir nur eine MySQL MONTH(date)-Funktion verwenden. (Beachten Sie das Jahr)

MONAT(Datum);
-- Verwendung: Die Funktion MONTH gibt eine Ganzzahl zurück, die den Monat des angegebenen Datumswerts darstellt.

-- Beispiel
MONAT AUSWÄHLEN('2020-11-11 00:00:00')
-- Der Rückgabewert ist 11

2. Innerhalb von 30 Tagen

Der Grund, warum ich „innerhalb von 30 Tagen“ nach dem aktuellen Monat schreibe, ist, dass ich oft auf Situationen stoße, in denen diese beiden Anforderungen ineinander umgewandelt werden. „Innerhalb von 30 Tagen“ kann auch „innerhalb eines Monats“ heißen.

In diesem Fall müssen wir die Funktion DATEDIFF(expr1,expr2) verwenden.

DATEDIFF(Ausdruck1,Ausdruck2)
- Verwendung: Die Parameter sind zwei Daten und die Differenz in Tagen zwischen expr1 und expr2 wird zurückgegeben.

-- Beispiel
Wählen Sie DATEDIFF('2020-11-01 08:00:00','2020-11-11 00:00:00')
-- Der Rückgabewert ist -10

3. Am Tag

Die Funktion TO_DAYS(Datum) muss für den aktuellen Tag verwendet werden.

TO_DAYS(Datum)
- Verwendung: Gibt die Gesamtzahl der Tage von 0000 (1 n. Chr.) bis zum aktuellen Datum zurück.

-- Beispiel
Wählen Sie TO_DAYS('0000-01-01') aus.
-- Der Rückgabewert ist 1
Wählen Sie TO_DAYS('0001-01-01') aus.
-- Der Rückgabewert ist 366

4. Aktuelle Stunde

In diesem Fall müssen die Funktionen HOUR(date) und CURDATE() zusammen verwendet werden.

STUNDE(Datum)
-- Verwendung: Gibt die aktuelle Zeit als Stunde des heutigen Tages zurück
-- Beispiel
STUNDE AUSWÄHLEN('2020-11-11 11:11:11')
-- Der Rückgabewert ist 11

CURDATE()
-- Verwendung: Gibt das heutige Datum ohne Stunden, Minuten und Sekunden zurück, jjjj-MM-tt

-- Anwendungsbeispiele
Wählen Sie * aus der Tabelle, in der „erstellt am“ > „CURDATE()“ und „STUNDE(erstellt am) = STUNDE(jetzt())“

5. Innerhalb von x Tagen

Dies kann mit der Funktion DATE_SUB(Datum, INTERVAL, Ausdruckseinheit) erreicht werden.

DATE_SUB(Datum,INTERVAL,Ausdruckseinheit)
-- Verwendung: Startdatum abzüglich einer Zeitspanne

Für die Einheit dahinter verbergen sich viele Werte, wie die folgende Tabelle zeigt:

Typ (Einheitswert) Bedeutung Die Form des Ausdrucks expr ist
JAHR Jahr JJ
MONAT Mond MM
TAG Tag DD
STUNDE Stunde hh
MINUTE Punkt mm
ZWEITE Zweite ss
JAHR_MONAT Jahr und Monat YY und MM werden durch ein beliebiges Symbol getrennt
TAG_STUNDE Tag und Stunde DD und hh werden durch ein beliebiges Symbol getrennt
DAY_MINUTE Tag und Minute DD und mm werden durch ein beliebiges Symbol getrennt
TAG_SEKUNDE Tage und Sekunden DD und ss werden durch ein beliebiges Symbol getrennt
HOUR_MINUTE Stunden und Minuten Verwenden Sie ein beliebiges Symbol, um hh und mm zu trennen
STUNDE_SEKUNDE Stunden und Sekunden Verwenden Sie ein beliebiges Symbol, um hh und ss zu trennen
MINUTE_SEKUNDE Minuten und Sekunden Verwenden Sie ein beliebiges Symbol, um mm und ss zu trennen

-- Beispiel
-- Datenabfrage innerhalb von sieben Tagen
Wählen Sie * aus der Tabelle, in der erstellt wurde > DATE_SUB(CURDATE(), INTERVAL 7 DAY)

6. Datenstatistiken innerhalb weniger Tage

Dieser Anforderung, nämlich die Datenmenge jeden Tag innerhalb von 7 Tagen zu zählen, begegnen wir häufig. In diesem Fall müssen wir den Fall berücksichtigen, in dem kein Daten-Push stattfindet, das heißt, wir müssen die Daten abrufen, auch wenn sie 0 sind.

Meine Gedanken dazu sind folgende:

WÄHLEN
	 DATE_SUB( CURDATE(), INTERVAL ms Tag ) AS Bestelldatum
AUS
	(
  WÄHLEN SIE 0 als s UNION ALL
  WÄHLEN SIE 1 UNION ALLE
  WÄHLEN SIE 2 UND VEREINIGEN SIE ALLE
  WÄHLEN SIE 3 UNION ALLE
  WÄHLEN SIE 4 UNION ALLE
  WÄHLEN SIE 5 UNION ALLE
  WÄHLEN SIE 6 
	)

Verwenden Sie die obigen SQL-Abfrageergebnisse als temporäre Tabelle, um sie mit der Datentabelle abzugleichen und die Anzahl der Daten innerhalb eines bestimmten Zeitraums zu zählen

-- Beispiel: Abfrage der Anzahl der Daten in jedem Monat innerhalb von 12 Monaten SELECT COUNT(t.created_at),res.date FROM 
	(WÄHLEN
	 DATE_FORMAT(DATE_SUB( CURDATE(), INTERVALL ms MONAT ),'%Y-%m') AS Datum
AUS
	(
  WÄHLEN SIE 0 als s UNION ALL
  WÄHLEN SIE 1 UNION ALLE
  WÄHLEN SIE 2 UND VEREINIGEN SIE ALLE
  WÄHLEN SIE 3 UNION ALLE
  WÄHLEN SIE 4 UNION ALLE
  WÄHLEN SIE 5 UNION ALLE
  WÄHLEN SIE 6 UNION ALLE
  WÄHLEN SIE 7 UNION ALLE
  WÄHLEN SIE 8 UNION ALLE
  WÄHLEN SIE 9 UNION ALLE
  WÄHLEN SIE 10 UNION ALLE
  WÄHLEN SIE 11 
	) m)res
	links beitreten 
	Tabelle t am res.date = DATE_FORMAT(t.created_at,'%Y-%m')
	GROUP BY Datum

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Zwei Möglichkeiten, um festzustellen, ob ein Mysql-String-Feld einen bestimmten String enthält
  • So überprüfen Sie, ob MySQL erfolgreich installiert wurde
  • So prüfen Sie, ob Daten vorhanden sind, bevor Sie sie in MySQL einfügen

<<:  Warum wird mir die Zugriffsschnittstelle für Docker Tomcat nicht angezeigt?

>>:  Detaillierte Erklärung, wo die von Docker abgerufenen Bilder gespeichert werden

Artikel empfehlen

Detaillierte Erklärung des Nginx-Prozessplanungsproblems

Nginx verwendet eine feste Anzahl von Multiprozes...

Detaillierte Erklärung von Javascript-Closures und -Anwendungen

Inhaltsverzeichnis Vorwort 1. Was ist ein Abschlu...

Webdesigner sollten Webseiten unter drei Aspekten optimieren

<br />Mit der zunehmenden Bandbreite werden ...

Vergleich der Leistung von int, char und varchar in MySQL

Im Internet kursieren viele scheinbar wahre „Gerü...

Detaillierte Installation und Konfiguration von MySql auf dem Mac

1. Herunterladen und installieren Laden Sie die D...

Tipps, wie Sie aus Pixeln umfassende Markenerlebnisse machen

Herausgeber: In diesem Artikel wird die Rolle erö...

MySQL-langsame Abfrage pt-query-digest Analyse des langsamen Abfrageprotokolls

1. Einleitung pt-query-digest ist ein Tool zum An...

Eine kurze Diskussion zum CSS-Höhenkollapsproblem

Leistung Zum Beispiel: HTML: <div Klasse="...

So erstellen Sie eine my.ini-Datei im MySQL 5.7.19-Installationsverzeichnis

Im vorherigen Artikel habe ich das ausführliche T...

Lernen Sie die Vue-Middleware-Pipeline in einem Artikel kennen

Beim Erstellen eines SPA müssen Sie häufig bestim...

So optimieren Sie MySQL-Indizes

1. Wie MySQL Indizes verwendet Indizes werden ver...