Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie speichert man am besten Datum/Uhrzeit in MySql?

  1. Normalerweise sollten Sie beides nicht tun:Die Datentypen in der Datenbankschicht sollten (möglichst) für sich allein aussagekräftig sein und nicht von Ihrer Anwendung abhängen, um sie zu interpretieren. Wie @Jim DeLaHunt sagt , dies ermöglicht der Datenbank, sie nach Bedarf einfach von SQL aus zu manipulieren/interpretieren (und ermöglicht Ihnen auch, in Zukunft problemlos auf dieselben Daten von einer anderen Anwendungscodebasis zuzugreifen).

    MySQL hat fünf temporale Typen , von denen nur zwei sowohl ein Datum als auch eine Uhrzeit speichern:DATETIME und TIMESTAMP .

    Wie andere angedeutet haben, hängt der Unterschied davon ab, ob Sie die Zeitzone speichern möchten - obwohl ich das für eine ziemlich verwirrende Sichtweise halte:

    • TIMESTAMP verwendet die time_zone der Sitzung Variable zum Konvertieren der Eingabe in einen UTC-Zeitstempel und dann wieder zurück für die Ausgabe:Sie ist nützlich, um einen genauen Zeitpunkt anzugeben;

    • DATETIME speichert einfach das Datum und die Uhrzeit ohne Berücksichtigung der Zeitzone, ähnlich wie das Fotografieren eines Kalenders und einer Uhr:Es ist nützlich, um ein Ereignis anzugeben, das weltweit zur gleichen Ortszeit stattfindet.

  2. Genauso wie Sie jede andere Spalte deklarieren würden, geben Sie den entsprechenden Datentyp nach dem Spaltennamen an.

    Beachten Sie, dass TIMESTAMP hat zusätzliche Funktionen, wie z. B. automatische Aktualisierung , die Sie ggf. in Ihrer Spaltendeklaration deaktivieren möchten.

  3. Mit einem der oben genannten Zeittypen können Sie all dies tun (mithilfe von Datumsfunktionen nach Bedarf). Die Standardausgabe von TIMESTAMP und DATETIME Typen ist ein String in 'YYYY-MM-DD HH:MM:SS' formatieren.

    Insbesondere die "verstrichene Zeit" aus dem Vergleich zweier Werte könnte beispielsweise mit MySQLs TIMEDIFF() Funktion:

    SELECT TIMEDIFF(end, start) AS elapsed
    FROM   my_table
    WHERE  ...