Heim >Datenbank >MySQL-Tutorial >Welcher Typ wird für Geburtstage in MySQL verwendet?
Verfügbare Geburtstagstypen in MySQL: 1. DATE-Typ, das darstellbare Datumsformat ist „JJJJ-MM-TT“, für dessen Speicherung 3 Bytes erforderlich sind; 2. DATETIME-Typ, das darstellbare Datumsformat ist „JJJJ-MM-TT HH:MM:SS“, was 8 Bytes für die Speicherung erfordert; 3. TIMESTAMP-Typ, das darstellbare Datumsformat ist „JJJJ-MM-TT HH:MM:SS“, was 4 Bytes für die Speicherung erfordert .
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
Datums- und Uhrzeittypen, die für Geburtstage in MySQL geeignet sind
Typname | Datumsformat | Datumsbereich | Speicheranforderungen |
---|---|---|---|
DATUM | JJJJ-MM- TT | 1000- 01-01 ~ 9999-12-3 | 3 Bytes |
DATETIME | JJJJ-MM-TT HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23: 59:59 | 8 Bytes |
TIMESTAMP | JJJJ-MM-TT HH:MM:SS | 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14 :07 UTC | 4 Bytes |
DATE-Typ
DATE-Typ wird verwendet, wenn nur ein Datumswert ohne den Zeitteil benötigt wird und 3 Bytes zur Speicherung benötigt. Das Datumsformat ist „JJJJ-MM-TT“, wobei JJJJ für das Jahr, MM für den Monat und TT für den Tag steht.
Beim Zuweisen von Werten zu Feldern vom Typ DATE können Sie zum Einfügen Zeichenfolgen- oder numerische Daten verwenden, sofern diese dem Datumsformat von DATE entsprechen. Wie unten gezeigt:
Das Datum wird im Format „JJJJ-MM-TT“ oder „JJJJMMTT“ ausgedrückt, der Wertebereich ist „1000-01-01“ ~ „9999-12-3“. Geben Sie beispielsweise „31.12.2015“ oder „20151231“ ein und das in die Datenbank eingefügte Datum ist der 31.12.2015.
Stellen Sie das Datum im Zeichenfolgenformat „JJ-MM-TT“ oder „JJMMTT“ dar, wobei JJ den zweistelligen Jahreswert darstellt. MySQL interpretiert die Regeln für zweistellige Jahreswerte: Jahreswerte im Bereich von „00 bis 69“ werden in „2000 bis 2069“ umgewandelt, und Jahreswerte im Bereich von „70 bis 99“ werden in „2000 bis 2069“ umgewandelt „1970–1999“. Wenn Sie beispielsweise „15-12-31“ eingeben, ist das in die Datenbank eingefügte Datum der 31.12.2015; wenn Sie „991231“ eingeben, ist das in die Datenbank eingefügte Datum der 31.12.1999.
Datum wird im numerischen Format JJMMTT ausgedrückt. Ähnlich wie beim vorherigen werden Jahreswerte im Bereich von 00 bis 69 in 2000 bis 2069 und Jahreswerte im Bereich von 80 bis 99 in umgewandelt 1980–1999. Wenn Sie beispielsweise 151231 eingeben, ist das in die Datenbank eingefügte Datum der 31.12.2015, und wenn Sie 991231 eingeben, ist das in die Datenbank eingefügte Datum der 31.12.1999.
Verwenden Sie CURRENT_DATE oder NOW(), um das aktuelle Systemdatum einzufügen.
Tipp: MySQL erlaubt eine „entspannte“ Syntax: Jedes Satzzeichen kann als Trennzeichen zwischen Datumsteilen verwendet werden. Beispielsweise sind „98-11-31“, „98.11.31“, „98/11/31“ und „98@11@31“ gleichwertig und diese Werte werden korrekt in die Datenbank eingefügt.
DATETIME-Typ
DATETIME-Typ wird für Werte verwendet, die sowohl Datums- als auch Uhrzeitinformationen enthalten müssen, und erfordert 8 Bytes zur Speicherung. Das Datumsformat ist „JJJJ-MM-TT HH:MM:SS“, wobei JJJJ für das Jahr, MM für den Monat, TT für den Tag, HH für die Stunde, MM für die Minute und SS für die Sekunde steht.
Beim Zuweisen von Werten zu Feldern vom Typ DATETIME können Sie zum Einfügen Zeichenfolgen- oder numerische Daten verwenden, sofern diese dem Datumsformat von DATETIME entsprechen, wie unten gezeigt:
Verwenden Sie „JJJJ-MM“. -DD HH:MM :SS' oder 'YYYYMMDDHHMMSS' Das im String-Format dargestellte Datum, der Wertebereich ist '1000-01-01 00:00:00' ~ '9999-12-3 23:59:59'. Wenn Sie beispielsweise „2014-12-31 05:05:05“ oder „20141231050505“ eingeben, lautet der in die Datenbank eingefügte DATETIME-Wert 2014-12-31 05:05:05.
Ein Datum im Zeichenfolgenformat „JJ-MM-TT HH:MM:SS“ oder „JJMMTDHHMMSS“, wobei JJ den zweistelligen Jahreswert darstellt. Wie zuvor wird der Jahreswert im Bereich „00~79“ in „2000~2079“ umgewandelt und der Jahreswert im Bereich „80~99“ wird in „1980~1999“ umgewandelt. Wenn Sie beispielsweise „14-12-31 05:05:05“ eingeben, ist die in die Datenbank eingefügte DATETIME 2014-12-31 05:05:05; wenn Sie 141231050505 eingeben, ist die in die Datenbank eingefügte DATETIME 2014 -31.12. 05:05:05 .
Datum und Uhrzeit im numerischen Format YYYYMMDDHHMMSS oder YYMMDDHHMMSS. Wenn Sie beispielsweise 20141231050505 eingeben, ist die in die Datenbank eingefügte DATUMZEIT 2014-12-31 05:05:05; wenn Sie 140505050505 eingeben, ist die in die Datenbank eingefügte DATUMZEIT 2014-12-31 05:05:05.
Tipp: MySQL erlaubt eine „entspannte“ Syntax: Jedes Satzzeichen kann als Trennzeichen zwischen Datums- oder Uhrzeitteilen verwendet werden. Zum Beispiel „98-12-31 11:30:45“, „98.12.31 11+30+35“, „98/12/31 11*30*45“ und „98@12@31 11^30^“. 45‘ sind gleichwertig und diese Werte können korrekt in die Datenbank eingefügt werden.
TIMESTAMP-Typ
TIMESTAMP hat das gleiche Anzeigeformat wie DATETIME, die Anzeigebreite ist auf 19 Zeichen festgelegt, das Datumsformat ist JJJJ-MM-TT HH:MM:SS und erfordert 4 Bytes zur Speicherung. Allerdings ist der Wertebereich der TIMESTAMP-Spalte kleiner als der Wertebereich von DATETIME, also '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC. Stellen Sie beim Einfügen von Daten sicher, dass diese innerhalb des zulässigen Wertebereichs liegen.
Tipps: Die koordinierte Weltzeit (englisch: Coordinated Universal Time, französisch: Temps Universel Coordonné) ist auch als Universal Unified Time, Universal Standard Time und International Coordinated Time bekannt. Die englischen (CUT) und französischen (TUC) Abkürzungen sind unterschiedlich und als Kompromiss lautet die Abkürzung UTC.
TIMESTAMP und DATETIME, zusätzlich zu unterschiedlichen Speicherbytes und unterstützten Bereichen, ist der größte Unterschied:
DATETIME Beim Speichern von Datumsdaten werden diese im tatsächlichen Eingabeformat gespeichert, d. h. alles, was eingegeben wird, wird gespeichert. Es hat nichts mit der Zeitzone zu tun;
Die Speicherung des TIMESTAMP-Werts wird im UTC-Format (Universal Coordinated Time) gespeichert. Die aktuelle Zeitzone wird beim Speichern konvertiert und beim Abrufen wieder in die aktuelle Zeitzone umgewandelt. Das heißt, bei der Abfrage ist der angezeigte Zeitwert je nach aktueller Zeitzone unterschiedlich.
Tipp: Wenn Sie einem DATETIME- oder TIMESTAMP-Objekt einen DATE-Wert zuweisen, wird der Zeitanteil des resultierenden Werts auf „00:00:00“ gesetzt, sodass der DATE-Wert keine Zeitinformationen enthält. Wenn einem DATE-Objekt ein DATETIME- oder TIMESTAMP-Wert zugewiesen wird, wird der Zeitanteil des resultierenden Werts entfernt, sodass der DATE-Wert keine Zeitinformationen enthält.
Zeit- und Datumsfunktionen
Systemzeitfunktionen now(), current_timestamp, sysdate()
Diese drei Funktionen können die Systemzeit zurückgeben, ihre Unterschiede sehen und gleichzeitig time Die durch den Zugriff auf diese drei Funktionen erzielten Ergebnisse sind die gleichen, nach einigen Sekunden Wartezeit sind die Ergebnisse jedoch unterschiedlich.
Die obige Abbildung zeigt, dass die von sysdate() zurückgegebene Zeit sich von now(), current_timestamp, unterscheidet, was 2 Sekunden langsamer ist. Die Gründe sind wie folgt:
current_timestamp ist ein Synonym für jetzt und die beiden sind tatsächlich gleich;
sysdate( ) Die Funktion gibt die Zeit zurück, zu der die aktuelle Funktion ausgeführt wird, während now() die Zeit zurückgibt, zu der die SQL-Anweisung ausgeführt wird
Zeitadditions- und Subtraktionsfunktion
① date_add und date_sub
date_add(Datum, Intervallausdruckseinheit) und date_sub(Datum, Intervallausdruckseinheit) repräsentieren eine Zunahme bzw. eine Abnahme.
select date_add('2017-12-18 22:51:00', interval 1 second), date_add('2017-12-18 22:51:00', interval 1 minute), date_add('2017-12-18 22:51:00', interval 1 hour), date_add('2017-12-18 22:51:00', interval 1 day), date_add('2017-12-18 22:51:00', interval 1 month), date_add('2017-12-18 22:51:00', interval 1 year);
Wie gehe ich mit date_add um, wenn ein Schaltmonat auftritt? MySQL gibt das Datum 29. Februar zurück, wenn es ein Schaltmonat ist, und den 28. Februar, wenn es kein Schaltmonat ist.
select date_add('2016-02-29 22:51:00', interval -1 year), date_add('2016-02-29 22:51:00', interval 4 year);
2015-02-28 22:51:002020-02-29 22:51:00
② datediff und timediff
datediff(date1, date2): Subtrahiere zwei Daten date1 - date2 und gebe die Anzahl der Tage zurück. select datediff('2016-02-29 22:51:00','2016-03-29 22:51:00');
timediff(time1, time2): Subtrahiere zwei Daten time1 - time2, Gibt die zurück Zeitunterschied (Format: 838:59:59). select timediff('2016-02-29 22:51:00','2016-01-29 22:51:00');
Hinweis: Die beiden Parametertypen der Funktion timediff(time1,time2) müssen gleich sein.
③ Zeitstempel erhöhen, verringern, Konvertierungsfunktion
timestamp(date)
– Datum zu Zeitstempeltimestamp(date)
-- date to timestamp
timestamp(date, time)
-- date + time
timestampadd(unit,interval,datetime_expr)
-- 类似date_add,对时间按单位进行增加,减少
select timestampadd(second, 60, '2017-12-18 00:00:00'); select timestampadd(minute, 60, '2017-12-18 00:00:00'); select timestampadd(hour, 60, '2017-12-18 00:00:00');
timestampdiff(unit,datetime_expr1,datetime_expr2)
timestamp(date, time)
– Datum + Zeit
timestampadd(unit,interval,datetime_expr)
– ähnlich wie date_add, Zeit um Einheit erhöhen und verringern
select timestampdiff(second, '2017-12-18 00:00:00','2017-12-18 12:00:00'); select timestampdiff(hour, '2017-11-18 00:00:00','2017-12-18 12:00:00'); select timestampdiff(day, '2017-10-17 00:00:00','2017-11-18 23:00:00');
timestampdiff(unit,datetime_expr1, datetime_expr2 )
– Berechnen Sie die Differenz zwischen zwei Zeiten. Sie können Sekunden, Minuten, Stunden, Tage, Monate, Jahre, Wochen berechnen Hinweis: Wenn Sie diese Funktion beim Abfragen von Daten für ein Datumsfeld verwenden, verwendet der Optimierer weder den Index des Felds noch können Sie die Daten über den Index abfragen, sodass die Abfrageeffizienz beispielsweise sehr gering ist Wenn das Feld Geburtsdatum einen Index hat, ist der Index aufgrund der Verwendung der Funktion date_format in der folgenden Abfrageanweisung ungültig: zukünftige) basierend auf seinem Geburtsdatum und dem aktuellen Datum)select date_format(now(),'%Y%m%d'), date_format(now(),'%Y-%m-%d'), date_format(now(),'%Y/%m/%d'), date_format(now(),'%m/%d/%Y');
【Verwandte Empfehlungen:
MySQL-Video-TutorialDas obige ist der detaillierte Inhalt vonWelcher Typ wird für Geburtstage in MySQL verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!