Heim  >  Artikel  >  Datenbank  >  Kann MySQL die Zeit vergleichen?

Kann MySQL die Zeit vergleichen?

(*-*)浩
(*-*)浩Original
2019-05-10 11:32:2914432Durchsuche

Der Zeitvergleich kann in MySQL implementiert werden, mit Anweisungen wie [ SELECT testdate FROM t1 WHERE testdate >= '2018-09-12';SELECT testdate FROM t1 WHERE testdate >= 20180912;].

Kann MySQL die Zeit vergleichen?

Kürzlich habe ich festgestellt, dass ich Datumsangaben falsch vergleiche. In der folgenden Anweisung ist das Feld a beispielsweise eine Spalte vom Typ DATETIME:

select a from t1 where DATEDIFF(a, &#39;2018-09-11&#39;) < 0;

Mit dieser Anweisung sollen alle Datensätze vor dem Datum 2018-09-11 gefunden werden. Bei dieser Anweisung liegt jedoch ein Problem vor. Wenn ein Feld indiziert ist, führt die Verwendung dieses Typs für den Datumsvergleich zu einer Abfrage den Index nicht zu verwenden. Dies verringert die Abfrageleistung.

Empfohlener Kurs: MySQL-Tutorial.

Kann MySQL die Zeit vergleichen?

Lesen Sie die MySQL-Dokumentation zum Datumsfeldvergleich. Beim Durchführen eines Datumsvergleichs wandelt MySQL das Datum zum Vergleich automatisch in eine Zahl um. Nach der Where-Bedingung gelten bei der Verwendung von Datumsangaben im Zeichenfolgenformat zum Vergleich mit Feldern vom Typ DATE, DATETIME, TIMESTAMP und TIME keine strengen Anforderungen an das Zeichenfolgenformat. Sie können ein beliebiges Formattrennzeichen zur Darstellung des Datums verwenden, z. B. „2018-09-“. 11“, „2018#09#11“, „2018&09&11“ sind alle die gleichen Daten für MySQL. Wenn kein Trennzeichen vorhanden ist, z. B. „20180911“, ist es dasselbe wie „2018-09-11“ oder andere Daten mit Trennzeichen. Zum Beispiel das Bild unten

select a from t1 where a 8ceb857d17468af6db78fb861ece6f6b, >=, 3e2c06d434587d1a4ba1b215286af4f0= '2018-09-12';
SELECT testdate FROM t1 WHERE testdate >= 20180912;
SELECT MOD(testdate,100) FROM t1 WHERE testdate >= 20180912;
SELECT testdate FROM t1 WHERE testdate >= '20180912';

Mysql ermöglicht das Speichern von „0000-00-00“ als „0“-Wert vom Typ DATE, auch virtuelles Datum genannt. In manchen Szenarien ist es praktischer als das Speichern von NULL-Werten. Wenn ein ungültiger Datumswert in einem Feld vom Typ DATE gespeichert wird, speichert MySQL ihn standardmäßig als „0000-00-00“. Wenn das Speichern von „0“-Werten nicht zulässig ist, aktivieren Sie den Parameter NO_ZERO_DATE.

Sie können auch die Funktion unix_timestamp verwenden, um die Zeichenzeit in einen Unix-Zeitstempel umzuwandeln.

select meeting_id,meeting_name,start_time,end_time from meeting_data 
	where meeting_id REGEXP '[0-9]{4}0001' 
		and unix_timestamp(start_time) 98af3aed4642ba62db3d3875db9cdaa5 unix_timestamp(NOW());

Das obige ist der detaillierte Inhalt vonKann MySQL die Zeit vergleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn