Implementierung des Zeitvergleichs in MySql unix_timestamp() Die Funktion unix_timestamp kann ein oder keine Argumente annehmen. Der Rückgabewert ist eine vorzeichenlose Ganzzahl. Ohne Parameter gibt es die Anzahl der Sekunden zurück, die seit 00:00:00, 1. Januar 1970 vergangen sind. Wenn ein Parameter vom Typ „Zeit“ oder eine Zeichenfolgendarstellung eines Zeittyps ist, handelt es sich um die Anzahl der Sekunden vom 01.01.1970, 00:00:00 Uhr, bis zur angegebenen Zeit. Mit dieser Funktion ist es naheliegend, den Zeitvergleich in einen vorzeichenlosen Ganzzahlvergleich umzuwandeln. Bestimmen Sie beispielsweise, ob eine Zeit innerhalb eines Bereichs liegt unix_timestamp(Zeit) zwischen unix_timestamp('Start') und unix_timestamp('Ende') Hier ist ein Beispiel mit der Verwendung der Datumsfunktionen. Die folgende Abfrage wählt alle Datensätze aus, bei denen der Wert von date_col innerhalb der letzten 30 Tage liegt: mysql> WÄHLE etwas AUS der Tabelle, WO TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(Datum) Gibt den Wochentagindex des Datums zurück (1=Sonntag, 2=Montag, ... 7=Samstag). Diese Indexwerte entsprechen dem ODBC-Standard. mysql> wähle DAYOFWEEK('1998-02-03'); -> 3 WOCHENTAG(Datum) Gibt den Wochentagindex des Datums zurück (0=Montag, 1=Dienstag, … 6=Sonntag). mysql> wähle WOCHENTAG('1997-10-04 22:23:00'); -> 5 mysql> wähle WOCHENTAG('1997-11-05'); -> 2 DAYOFMONTH(Datum) Gibt den Tag des Monats im Datum im Bereich 1 bis 31 zurück. mysql> wähle DAYOFMONTH('1998-02-03'); -> 3 DAYOFYEAR(Datum) Gibt den Tag des Jahres für das Datum im Bereich 1 bis 366 zurück. mysql> wähle DAYOFYEAR('1998-02-03'); -> 34 MONAT(Datum) Gibt den Monat des Datums im Bereich von 1 bis 12 zurück. mysql> wähle MONAT('1998-02-03'); -> 2 DAYNAME(Datum) Gibt den Wochentag des Datums zurück. mysql> wähle DAYNAME("1998-02-05"); -> 'Donnerstag' MONATSNAME(Datum) Gibt den Monatsnamen im Datum zurück. mysql> wähle MONATSNAME("1998-02-05"); -> 'Februar' QUARTAL(Datum) Gibt das Quartal des Jahres für das Datum im Bereich 1 bis 4 zurück. mysql> wähle QUARTAL('98-04-01'); -> 2 WOCHE(Datum) WOCHE(Datum, Erstes) Für Orte, an denen Sonntag der erste Tag der Woche ist, gibt es ein einzelnes Argument, das die Wochennummer des Datums im Bereich von 0 bis 52 zurückgibt. Mit der 2-Argument-Form WEEK() können Sie angeben, ob die Woche am Sonntag oder am Montag beginnt. Wenn das zweite Argument 0 ist, beginnt die Woche am Sonntag, wenn das zweite Argument 1 ist, beginnt die Woche am Montag. mysql> wähle WOCHE('1998-02-20'); -> 7 mysql> wähle WOCHE('1998-02-20',0); -> 7 mysql> wähle WOCHE('1998-02-20',1); -> 8 JAHR(Datum) Gibt das Jahr des Datums im Bereich 1000 bis 9999 zurück. mysql> wähle JAHR('98-02-03'); -> 1998 STUNDE (Zeit) Gibt die Stunde im Bereich 0 bis 23 zurück. mysql> wähle STUNDE('10:05:03'); -> 10 MINUTE (Zeit) Gibt die Minute der Zeit im Bereich von 0 bis 59 zurück. mysql> wähle MINUTE('98-02-03 10:05:03'); -> 5 SEKUNDE (Zeit) Gibt die Zeit in Sekunden im Bereich von 0 bis 59 zurück. mysql> wähle ZWEITENS('10:05:03'); -> 3 PERIOD_ADD(P,N) Fügen Sie dem Zeitraum P N Monate hinzu (im Format JJMM oder JJJJMM). Gibt einen Wert im Format JJJJMM zurück. Beachten Sie, dass der Phasenparameter P kein Datumswert ist. mysql> wähle PERIOD_ADD(9801,2); -> 199803 PERIOD_DIFF(P1,P2) Gibt die Anzahl der Monate zwischen den Zeiträumen P1 und P2 zurück. P1 und P2 sollten im Format JJMM oder JJJJMM vorliegen. Beachten Sie, dass die Periodenparameter P1 und P2 keine Datumswerte sind. mysql> wähle PERIOD_DIFF(9802,199703); -> 11 DATE_ADD(Datum,INTERVAL-Ausdruckstyp) DATE_SUB(Datum,INTERVAL-Ausdruckstyp) ADDDATE(Datum,INTERVAL-Ausdruckstyp) SUBDATE(Datum,INTERVAL-Ausdruckstyp) Diese Funktionen führen Datumsarithmetik durch. Ab MySQL 3.22 sind sie neu. ADDDATE() und SUBDATE() sind Synonyme für DATE_ADD() und DATE_SUB(). In MySQL 3.23 können Sie + und - anstelle von DATE_ADD() und DATE_SUB() verwenden. (Siehe Beispiel.) date ist ein DATETIME- oder DATE-Wert, der das Startdatum angibt, expr ist ein Ausdruck, der den Intervallwert angibt, der zum Startdatum addiert oder davon subtrahiert werden soll, und expr ist eine Zeichenfolge; sie kann mit einem „-“ beginnen, um ein negatives Intervall anzuzeigen. Typ ist ein Schlüsselwort, das angibt, wie der Ausdruck interpretiert werden soll. Die Funktion EXTRACT(Typ FROM Datum) gibt das Intervall „Typ“ aus einem Datum zurück. Die folgende Tabelle zeigt, wie die Parameter Typ und Ausdruck verknüpft sind: Typ Wert Bedeutung Erwarteter Ausdruck Format SEKUNDE Sekunden MySQL erlaubt beliebige Satzzeichentrennzeichen im Ausdrucksformat. Zeigt an, dass das vorgeschlagene Trennzeichen angezeigt wird. Wenn das Datumsargument ein DATE-Wert ist und Ihre Berechnung nur die Teile JAHR, MONAT und TAG enthält (also keinen Zeitanteil), ist das Ergebnis ein DATE-Wert. Andernfalls ist das Ergebnis ein DATETIME-Wert. mysql> SELECT "1997-12-31 23:59:59" + INTERVALL 1 SEKUNDE; -> 1. Januar 1998 00:00:00 mysql> INTERVALL 1 TAG AUSWÄHLEN + "1997-12-31"; -> 01.01.1998 mysql> SELECT "1998-01-01" - INTERVALL 1 SEKUNDE; -> 31.12.1997 23:59:59 mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVALL 1 SEKUNDE); -> 1. Januar 1998 00:00:00 mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVALL 1 TAG); -> 1998-01-01 23:59:59 mysql> SELECT DATE_ADD("1997-12-31 23:59:59", INTERVALL "1:1" MINUTE_SEKUNDE); -> 1998-01-01 00:01:00 mysql> SELECT DATE_SUB("1998-01-01 00:00:00", INTERVALL "1 1:1:1" TAG_SEKUNDE); -> 30.12.1997 22:58:59 mysql> SELECT DATE_ADD("1998-01-01 00:00:00", INTERVALL "-1 10" TAG_STUNDE); -> 30.12.1997 14:00:00 mysql> SELECT DATE_SUB("1998-01-02", INTERVALL 31 TAGE); -> 02.12.1997 mysql> AUSWÄHLEN EXTRACT(JAHR AUS "1999-07-02"); -> 1999 mysql> SELECT EXTRACT(JAHR_MONAT AUS "1999-07-02 01:02:03"); -> 199907 mysql> SELECT EXTRACT(TAG_MINUTE AUS "1999-07-02 01:02:03"); -> 20102 Wenn Sie einen Intervallwert angeben, der zu kurz ist (der nicht den vom Schlüsselwort „Typ“ erwarteten Intervallteil enthält), geht MySQL davon aus, dass Sie den äußersten linken Teil des Intervallwerts ausgelassen haben. Zum Beispiel, Wenn Sie den Typ DAY_SECOND angeben, wird erwartet, dass der Wert von expr die Komponenten Tag, Stunde, Minute und Sekunde enthält. Wenn Sie einen Wert wie "1:10" angeben, MySQL geht davon aus, dass die Tages- und Stundenangaben fehlen und dass der Wert Minuten und Sekunden darstellt. Mit anderen Worten, "1:10" DAY_SECOND ist gleichbedeutend mit "1:10" MINUTE_SECOND: Dies ist mehrdeutig hinsichtlich der Art und Weise, wie MySQL TIME-Werte als Darstellung der verstrichenen Zeit und nicht der Tageszeit interpretiert. Wenn Sie ein Datum verwenden, das wirklich falsch ist, Das Ergebnis ist NULL. Wenn Sie MONTH, YEAR_MONTH oder YEAR erhöhen und das resultierende Datum größer als die maximale Anzahl von Tagen im neuen Monat ist, wird der Tag so angepasst, dass die maximale Anzahl von Tagen im neuen Monat genutzt wird. mysql> select DATE_ADD('1998-01-30', Intervall 1 Monat); -> 28.02.1998 Beachten Sie aus den vorherigen Beispielen, dass bei dem Wort INTERVAL und dem Schlüsselwort type die Groß-/Kleinschreibung nicht beachtet wird. TO_DAYS(Datum) Gibt bei einem angegebenen Datum eine Tageszahl zurück (die Anzahl der Tage seit dem Jahr 0). mysql> wähle HEUTE_TAGE(950501); -> 728779 mysql> wähle TO_DAYS('1997-10-07'); -> 729669 VON_TAGEN(N) Gibt bei gegebener Tageszahl N einen DATE-Wert zurück. mysql> wähle FROM_DAYS(729669); -> '1997-10-07' DATE_FORMAT(Datum,Format) Formatiert einen Datumswert entsprechend der Formatzeichenfolge. Die folgenden Modifikatoren können in der Formatzeichenfolge verwendet werden: %M Monatsname (Januar...Dezember) %W Wochentag (Sonntag...Samstag) Alle anderen Zeichen werden ohne Interpretation in das Ergebnis übernommen. mysql> wähle DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y'); -> 'Samstag Oktober 1997' mysql> wähle DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s'); -> '22:23:00' mysql> wähle DATE_FORMAT('1997-10-04 22:23:00', %D %y %a %d %m %b %j'); -> '4. 97 Sa 04 10 Okt 277' mysql> wähle DATE_FORMAT('1997-10-04 22:23:00', „%H %k %I %r %T %S %w“); -> '22 22 10 22:23:00 22:23:00 00 6' Ab MySQL 3.23 ist vor dem Formatmodifiziererzeichen ein „%“ erforderlich. In früheren Versionen von MySQL ist % optional. TIME_FORMAT(Zeit,Format) Dies wird wie die Funktion DATE_FORMAT() oben verwendet, aber die Formatzeichenfolge kann nur die Formatmodifikatoren enthalten, die Stunden, Minuten und Sekunden verarbeiten. Die anderen Modifikatoren erzeugen einen NULL-Wert oder 0. CURDATE() CURRENT_DATE gibt den heutigen Datumswert im Format „JJJJ-MM-TT“ oder „JJJJMMTT“ zurück, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird. mysql> wähle CURDATE(); -> '15.12.1997' mysql> wähle CURDATE() + 0; -> 19971215 CURTIME() AKTUELLE_ZEIT Gibt den aktuellen Zeitwert im Format „HH:MM:SS“ oder HHMMSS zurück, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird. mysql> wähle CURTIME(); -> '23:50:26' mysql> wähle CURTIME() + 0; -> 235026 JETZT() SYSDATE() CURRENT_TIMESTAMP Gibt das aktuelle Datum und die aktuelle Uhrzeit im Format „JJJJ-MM-TT HH:MM:SS“ oder „JJJJMMTDHHMMSS“ zurück, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird. mysql> JETZT auswählen(); -> '1997-12-15 23:50:26' mysql> wähle JETZT() + 0; -> 19971215235026 UNIX_TIMESTAMP() mysql> wähle UNIX_TIMESTAMP(); -> 882226357 mysql> wähle UNIX_TIMESTAMP('1997-10-04 22:23:00'); -> 875996580 Wenn UNIX_TIMESTAMP mit einer TIMESTAMP-Spalte verwendet wird, akzeptiert die Funktion den Wert direkt, ohne implizite Konvertierung von „String in Unix-Zeitstempel“. FROM_UNIXTIME(unix_zeitstempel) Gibt den durch das Argument unix_timestamp dargestellten Wert im Format „JJJJ-MM-TT HH:MM:SS“ oder „JJJJMMTDHHMMSS“ zurück, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird. mysql> wähle FROM_UNIXTIME(875996580); -> '1997-10-04 22:23:00' mysql> wähle FROM_UNIXTIME(875996580) + 0; -> 19971004222300 FROM_UNIXTIME(Unix_Zeitstempel,Format) Gibt eine Zeichenfolge zurück, die den Unix-Zeitstempel darstellt, formatiert entsprechend der Formatzeichenfolge. Das Format kann dieselben Modifikatoren enthalten, die für die Funktion DATE_FORMAT() aufgelistet sind. mysql> wähle FROM_UNIXTIME(UNIX_TIMESTAMP(), %Y %D %M %h:%i:%s %x'); -> '1997 23. Dezember 03:43:30 x' SEC_TO_TIME (Sekunden) Gibt das Sekundenargument in Stunden, Minuten und Sekunden umgerechnet zurück. Der Wert wird als „HH:MM:SS“ oder HHMMSS formatiert, je nachdem, ob die Funktion in einem Zeichenfolgen- oder numerischen Kontext verwendet wird. mysql> wähle SEC_TO_TIME(2378); -> '00:39:38' mysql> wähle SEC_TO_TIME(2378) + 0; -> 3938 TIME_TO_SEC(Zeit) Gibt den Zeitparameter, umgerechnet in Sekunden, zurück. mysql> wähle TIME_TO_SEC('22:23:00'); -> 80580 mysql> wähle TIME_TO_SEC('00:39:38'); -> 2378 MySQL hat viele Datumsfunktionen. Die für den Datumsvergleich verwendete Funktion ist nicht unbedingt eine einzelne Funktion. Es kann eine Kombination mehrerer Funktionen sein. Sie müssen also Ihre Vorstellungskraft einsetzen. Das könnte Sie auch interessieren:
|
<<: Verwendung und Unterschied von Js-Modulverpackungsexporten erfordern Import
>>: So verwenden Sie Nginx zur Verwaltung einer domänenübergreifenden Vue-Entwicklungsumgebung
In diesem Artikel wird das Tutorial zur kostenlos...
Code kopieren Der Code lautet wie folgt: <html...
#include <linux/moduleparam.h> 1. Modulpara...
Inhaltsverzeichnis Vorwort Was ist DrawCall Welch...
Um zwei verschiedene Tabellen abzufragen, müssen ...
Inhaltsverzeichnis 1. Was ist eine berechnete Eig...
Wenn Sie sich bei der Verwendung der MySQL-Datenb...
0. Was ist ein Tag? XML/HTML-CodeInhalt in die Zw...
Vorwort Ich wollte vor kurzem CocosCreator lernen...
HTML besteht aus Tags und Attributen, die zusamme...
Beachten! ! ! Wählen Sie * vom Benutzer, wobei di...
Bei der sogenannten kaskadierenden Replikation sy...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis 1. Was ist Multi-Instance 2. V...
Problem: Die MySQL-Datenbank ist unerwartet abges...