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

CentOS 7.2 erstellt einen Nginx-Webserver zum Bereitstellen des Uniapp-Projekts

Panther begann als Anfänger und ich bin immer noc...

Tutorial zur Migration von MySQL von phpstudy nach Linux

Projektzweck Migrieren Sie die Daten in MySQL 5.5...

Vorteile und Nachteile von JSON sowie Einführung in die Verwendung

Inhaltsverzeichnis 1. Was ist JSON 1.1 Array-Lite...

Tutorial zum schnellen Bereitstellen von Clickhouse mit Docker-Compose

ClickHouse ist ein spaltenorientiertes Open-Sourc...

Tutorial zur MySQL-SQL-Optimierung: IN- und RANGE-Abfragen

Lassen Sie uns zunächst über die in()-Abfrage spr...

JavaScript, um einen einheitlichen Animationseffekt zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erläuterung der asynchronen Axios-Kommunikation in Vue

1. Zuerst erstellen wir eine JSON-Datei zur inter...

Grundlegendes Tutorial zur Verwendung der Explain-Anweisung in MySQL

Inhaltsverzeichnis 1. Übersicht 1. Aussagetest er...

MySQL Series 6-Benutzer und Autorisierung

Inhaltsverzeichnis Tutorial-Reihe 1. Benutzerverw...