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

MySQL - Tabellenergebnis zum Teil umformatieren ??

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von hightower1981, 17 Oktober 2015.

  1. hightower1981

    hightower1981 Benutzer

    Hallo,

    ich habe 2 Tabellen welche miteinander verknüpft werden sollen und die Ausgabe zum Teil in ein anderes Format gewandelt werden muss.

    Schema:
    Tabelle 1
    name [varchar(120)]
    nr [int(11)]

    Tabelle 2
    name [varchar(120)]
    datum [timestamp]
    nr [int(11)]

    Ergebnis
    name [varchar(120)]
    nr [int(11)]
    datum [bigint(14)]

    Bislang fand ich noch keinen Ansatz.
    Erbitte Hilfe.

    Das geht...
    SELECT T1.title, T1.typ, T2.value, T2.timestamp
    FROM aktoren T1 INNER JOIN stats T2
    WHERE T2.aktor_id = 26 AND T1.id = T2.aktor_id AND T2.timestamp >= 1445071073

    ABER

    SELECT T1.title, T1.typ, T3.value, T3.lastchange
    FROM aktoren T1 INNER JOIN log T3
    WHERE T3.aktor_id = 26 AND T1.id = T3.aktor_id AND T3.lastchange >= 1445071073

    geht nicht, da T3.lastchange [timestamp] formatiert ist und ich in der Ausgabe dieses Feld gern im [bigint(14)] Format benötige um es mit ">= 1445071073" auszuwerten.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Wie hängen die Tabellen zusammen? Warum willst Du ein Datum als Zahl?
     
  3. hightower1981

    hightower1981 Benutzer

    Es gibt eine Datenbank welche seit Jahren geschrieben wird.
    Die Software dahinter möchte ich nun etwas "aufbohren" und da muss ich leider die Punkte zusammenführen um nicht die DB umzustellen.

    Es steht jeweils ein Datum drin, welches nur unterschiedlich geschrieben wird.
    einmal 2015-03-02 20:48:03 und einmal 1425322083.

    Verstanden?
     
    Zuletzt bearbeitet: 17 Oktober 2015
  4. akretschmer

    akretschmer Datenbank-Guru

    Ich ziehe es vor, immer korrekte Datentypen zu verwenden. Um so eine Zahl in einen Timestamp zu konvertieren gibt es sicher auch in MySQL passende Funktionen, in PG ginge es so:

    Code:
    test=*# select to_timestamp(1445071073);
      to_timestamp
    ------------------------
     2015-10-17 10:37:53+02
    (1 row)
    
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Achso, andersrum geht es natürlich auch:

    Code:
    test=*# select extract(epoch from now());
      date_part
    ------------------
     1445064216.98815
    (1 row)
    
    Aber wer will das schon?
     
  6. hightower1981

    hightower1981 Benutzer

    Ich habe in der Ausgabe ja 2015-10-17 10:37:53 stehen aber möchte das ja in 1445071073 gewandelt haben, um im weitern Schritt die 1445071073 zu verarbeiten.

    .. da hapert es bisher noch an der Schreibweise ggf. Syntax

    Beispiel:

    SELECT T1.title, T1.typ, T1.lastchange as timestamp FROM log T1 WHERE T1.xid = 20

    aber da habe ich in der Spalte timestamp noch das alte Format 2015-10-17 10:37:53 drin.

    EDIT: Danke, nun muss nur noch das richtige zusammengeschoben werden ;-) ...
     
    Zuletzt bearbeitet: 17 Oktober 2015
  7. akretschmer

    akretschmer Datenbank-Guru

    ja, siehe meine letzt eAntwort ;-)
     
  8. hightower1981

    hightower1981 Benutzer

    epoch ist schon der richtige Weg laut Google, nur finde ich derzeit noch keinen Ansatz ...
     
  9. akretschmer

    akretschmer Datenbank-Guru

    Der korrekte Ansatz wäre, generell korrekte Datentypen zu verwenden. MySQL macht es Dir da sogar leicht, weil es fast keine hat, im Vergleich zu z.B. PostgreSQL ;-)
     
  10. akretschmer

    akretschmer Datenbank-Guru

  11. hightower1981

    hightower1981 Benutzer

    ... so ist es seben, wenn man ein Projekt fortführt was man nicht begonnen hat aber dies verbessern möchte ....
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Nun ja, ich hab dir den Link zur Doku genannt, damit solltest Du weiterkommen. Das ist aber dennoch alles ganz gruselig, weil Du da z.B. keine Indexe mehr nutzen kannst, da MySQL u.a. keine funktionalen Indexe kann.

    Manchmal ist ein radikaler Schnitt letztendlich besser als vergammelten Müll am Leben zu erhalten.
     
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