Würden Sie die Verwendung eines datetime oder eine Zeitstempel Feld und warum (unter Verwendung von MySQL)?
Ich arbeite mit PHP auf der Serverseite.
Würden Sie die Verwendung eines datetime oder eine Zeitstempel Feld und warum (unter Verwendung von MySQL)?
Ich arbeite mit PHP auf der Serverseite.
En DEFAULT CURRENT_TIMESTAMP
Unterstützung für eine DATETIME
wurde in MySQL 5.6 hinzugefügt.
"Jedes der Synonyme für CURRENT_TIMESTAMP
haben die gleiche Bedeutung wie CURRENT_TIMESTAMP
. Diese sind CURRENT_TIMESTAMP(), NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP
y LOCALTIMESTAMP()
." -> mysql-unterlagen
Können Sie einige Gründe nennen, warum ich dies der Verwendung von Zeitstempeln vorziehen sollte?
@Jasir nicht wirklich, es scheint eine große Debatte zu sein. Ich wollte nur darauf hinweisen, dass datetime bestimmte Zeitpunkte darstellen kann, wenn es eine Konvention gibt, alle datetimes in einer bestimmten Zeitzone (z.B. UTC) zu speichern. Ich persönlich würde alles in datetime speichern, wobei der Zeitstempel auf das Jahr 2038 beschränkt ist (auch wenn ich davon ausgehe, dass sie irgendwann etwas daran ändern werden), und wenn ich mir einige Rohdaten in der DB ansehe, ist datetime lesbar, ohne dass ich eine Konvertierung vornehmen muss. Wiederum ist dies sehr subjektiv.
@Matthew Aber wenn die Sitzung time_zone
ist nicht UTC
Sie werden auch Überraschungen (Bugs) erleben, wenn Sie MySQL-Datum/Zeit-Funktionen wie NOW()
, DATE_ADD
ohne vorher die Zeitzone umzurechnen... Warum also die Interaktion mit der Datenbank komplizierter machen als nötig?
El DATENZEIT wird für Werte verwendet, die Datums- und Zeitangaben enthalten. MySQL ruft DATETIME-Werte im Format ab und zeigt sie an. Der unterstützte Bereich ist . 'JJJJJ-MM-TT hh:mm:ss' '1000-01-01 00:00:00''9999-12-31 23:59:59'
El TIMESTAMP Datentyp wird für Werte verwendet, die Datums- und Zeitanteile enthalten. TIMESTAMP hat einen Bereich von '1970-01-01 00:00:01'UTC bis '2038-01-19 03:14:07'UTC.
mysql> SELECT col,
> CAST(col AT TIME ZONE INTERVAL '+00:00' AS DATETIME) AS ut
> FROM ts ORDER BY id;
+---------------------+---------------------+
| col | ut |
+---------------------+---------------------+
| 2020-01-01 10:10:10 | 2020-01-01 15:10:10 |
| 2019-12-31 23:40:10 | 2020-01-01 04:40:10 |
| 2020-01-01 13:10:10 | 2020-01-01 18:10:10 |
| 2020-01-01 10:10:10 | 2020-01-01 15:10:10 |
| 2020-01-01 04:40:10 | 2020-01-01 09:40:10 |
| 2020-01-01 18:10:10 | 2020-01-01 23:10:10 |
+---------------------+---------------------+
URL MySQL 8.0 : https://dev.mysql.com/doc/refman/8.0/en/datetime.html
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
Hier finden Sie einige wichtige Informationen codeproject.com/Tipps/1215635/MySQL-DATETIME-vs-TIMESTAMP
11 Stimmen
Wenn Sie möchten, dass Ihre Anwendung im Februar 2038 unterbrochen wird, verwenden Sie timestamp. Prüfen Sie den Datumsbereich.
0 Stimmen
Wenn auch nur die geringste Möglichkeit besteht, dass Ihre Datenbank Werte in einer anderen Zeitzone speichern oder Verbindungen von einer Anwendung in einer anderen Zeitzone empfangen muss, sollten Sie ISO-8601 CHARs für alle wichtigen Zeitstempel verwenden. Siehe diese Frage: stackoverflow.com/questions/40670532/
0 Stimmen
Datetime ist völlig nutzlos . es ist nur ein dummer String. timestamp ist in jeder Hinsicht perfekt sondern sie endet im Jahr 2038.