MySQL - Tabellenergebnis zum Teil umformatieren ??

hightower1981

Benutzer
Beiträge
8
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.
 
Werbung:
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:
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)
 
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?
 
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:
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 ;-)
 
Werbung:
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.
 
Zurück
Oben