1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

welches Format für UTC-Zeitstempel wählen?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Papp Nase, 10 März 2014.

  1. Papp Nase

    Papp Nase Fleissiger Benutzer

    Hi,

    welches Zahlenformat wählt ihr so für einen UTC-Zeitstempel? Nehmt ihr einen langen Integer oder gibt es einen speziellen Feldnamen dafür? Ich arbeite mit phpMyAdmin, habe aber bisher kein passendes Feldformat gefunden, dass die Zeit akzeptiert (ausser String).
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Was soll die Frage? INT ist für Zahlen, nicht für Zeiten. Hat zwar beides 6 Buchstaben und beginnt mit Z, ansonsten aber nicht viel gemeinsam. Schau in die Doku Deiner DB, in PG gibt es TIMESTAMP und TIMESTAMPTZ für Zeiten.
     
  3. Hony%

    Hony% Datenbank-Guru

    Kein Zahlenformat. Du suchst nach DATETIME.

    Gruß
    Hony
     
  4. Papp Nase

    Papp Nase Fleissiger Benutzer

    Datetime wird aber nicht angenommen. Habe eine csv-Datei in die Datenbank eingebunden und bei den UTC-Zeitstempeln steht dann bei Datetime stets der Wert Null, drum dachte ich, dass Datetime nicht geht.
     
  5. Hony%

    Hony% Datenbank-Guru

    Alternativ gibt es noch TIMESTAMP. Wie sieht den so ein UTC-Zeitstempel aus?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Dann paßt möglicherweise das Format nicht. Daran kann man arbeiten.
     
  7. Papp Nase

    Papp Nase Fleissiger Benutzer

    So ein UTC-Zeitstempel ist eine mehrstellige Zahl. Aktuell haben meine UTC-Werte 10 Stellen, z.B.

    1394524208,0.

    Wird der UTC-Wert um eins erhöht, also z.B. auf

    1394524209,0

    dann ist eine Sekunde vergangen. Es gibt ein Startdatum, dass Anfang der 70er Jahre definiert wurde. Mit Hilfe der vergangenen Sekunden kann man das aktuelle Datum berechnen.

    Weil ich aber reine Sekunden brauche und keine Hundertstel oder noch kürzere Intervalle, wollte ich diesen 10stelligen Wert als long-Int abspeichern. Diese Werte werden mit Timestamp und Datetime nicht aus der CSV-Datei übernommen, es steht dann immer 0:00 Uhr und immer das gleiche Datum dadrinnen.
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Normal.

    Code:
    test=*# select timestamp with time zone 'epoch' + 1394524208.0 * interval '1 second';
      ?column?
    ------------------------
     2014-03-11 08:50:08+01
    (1 row)
    
    Wie ich eingangs schrieb: das eine ist für das Eine, das andere für das Andere. Manche Dinge kann man umrechnen. Andere Dinge nicht.
     
  9. Hony%

    Hony% Datenbank-Guru

    MySQL kann aus dem entsprechenden INTEGER-Wert ein Datum machen:
    Code:
    SELECT FROM_UNIXTIME( 1394524208 ) 
    Du kannst daher den Import als BIGINT durchführen und anschließend den konvertierten Wert in eine andere DATETIME Spalte schreiben.

    Code:
    mysql> SELECT * FROM nase1;
    +------------+------+
    | timestamp  | date |
    +------------+------+
    | 1394524208 | NULL |
    | 1394524209 | NULL |
    +------------+------+
    2 rows in set (0.00 sec)
    
    mysql> UPDATE nase1 SET date = FROM_UNIXTIME(timestamp);
    Query OK, 2 rows affected (0.05 sec)
    Rows matched: 2  Changed: 2  Warnings: 0
    
    mysql> ALTER TABLE `nase1` DROP `timestamp`;
    Query OK, 2 rows affected (0.07 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> ALTER TABLE `nase1` CHANGE `date` `date` DATETIME NOT NULL;
    Query OK, 2 rows affected (0.13 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> SELECT * FROM nase1;
    +---------------------+
    | date  |
    +---------------------+
    | 2014-03-11 08:50:08 |
    | 2014-03-11 08:50:09 |
    +---------------------+
    2 rows in set (0.00 sec)
    
     
  10. Papp Nase

    Papp Nase Fleissiger Benutzer

    Ok, also kann ich den Zeitstempel doch als großen Integer speichern, weil eine Antwort mal lautete:

     
  11. Hony%

    Hony% Datenbank-Guru

    Du kannst auch einen VARCHAR, TEXT oder BLOB als Container nehmen. Für Zeitangaben ist aber keiner davon gedacht. Zeitfunktionen der Datenbank werden damit auch nicht oder nur eingeschränkt funktionieren.
     
    akretschmer gefällt das.
  12. akretschmer

    akretschmer Datenbank-Guru

    Ja, sicher. Du kannst sie auch als TEXT oder als animiertes GIF-Image speichern. Der Punkt ist einfach, daß Datenbanken diverse Datentypen mit sich bringen, deren Verwendung Vorteile hat. Zum Beispiel Rechenoperationen, Indexunterstützung oder Constraints.
     
  13. akretschmer

    akretschmer Datenbank-Guru

    Da haben wir zeitgleich fast dasselbe geschrieben ;-)
     
    Hony% gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden