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

So entwerfen und erstellen Sie adaptive Webseiten

Mit der Verbreitung von 3G nutzen immer mehr Mens...

So erstellen Sie ein ELK-Protokollsystem basierend auf Docker

Hintergrundanforderungen: Mit zunehmender Größe d...

Tutorial zur Installation der DAMO-Datenbank auf Centos7

1. Vorbereitung Nach der Installation des Linux-B...

Eine sehr detaillierte Erklärung der Linux C++ Multi-Thread-Synchronisierung

Inhaltsverzeichnis 1. Mutex 1. Initialisierung de...

Detaillierte Erläuterung der Vue-Projektverpackung

Inhaltsverzeichnis 1. Zugehörige Konfiguration Fa...

Lösung für VMware Workstation Pro, das unter Windows nicht läuft

Hat jemand von Ihnen nach dem Nationalfeiertag fe...

Bei MySQL-Zeichentypen wird die Groß-/Kleinschreibung beachtet.

Standardmäßig sind MySQL-Zeichentypen nicht case-...

Techniken zur Wiederverwendung von HTML

HTML-Wiederverwendung ist ein Begriff, der selten ...

Web-Unterrichtspläne, Unterrichtspläne für Anfänger

Unterrichtsthemen Webseite Anwendbare Klasse Zwei...

So finden Sie Websites mit SQL-Injection (unbedingt lesen)

Methode 1: Verwenden Sie die erweiterte Suche von...

Ein kurzer Vortrag über das Klonen von JavaScript

Inhaltsverzeichnis 1. Oberflächliches Klonen 2. T...

Detailliertes Beispiel für die Verwendung von useState in React

Verwendungsstatus useState fügt einer Komponente ...