gelöschter Benutzer
Uhrzeit ausgeben
Hallo zusammen!
Ich habe jetzt schon länger probiert. Aber leider nicht das Ergebnis was ich haben möchte.
Und zwar habe ich in einer Excel-Datei ein Feld mit der Formatierung Uhrzeit hh:mm. Das habe ich jetzt in eine Datenbank importiert.
Leider stelle MySql das Format automatisch auf Dezimal.
Kann mir wer sagen, wie ich die Uhrzeit korrekt in die Datenbank importieren kann, um sie dann auch als hh:mm ausgeben zu lassen?
Der Versuch, das als Varchar einzulesen hat irgendwie nicht funktioniert.
Danke im voraus!
Gruß
Marcus
gelöschter Benutzer
Hallo Marcus,
du musst es nur auf TIME stellen dann geht es schon.
Gruß Thomas
gelöschter Benutzer
Hallo Thomas!
Es ist zum auswachsen.
Egal wie ich in Excel die Zeit formatiere, Mysql macht daraus 00:00:00
Muss da per SQL-Befehl in der DB vielleicht noch irgendwas formatiert werden? Mein Addison-Wesley-Wälzer sagt da leider nichts zu.
Danke und Gruß
Marcus
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
seitenreportInhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
Hallo Marcus,
versuch mal, in MySQL Unix Timestamps zu verwenden, diese eignen sich besser für Datumsberechnungen als TIME/Decimal Felder. Der Datentyp ist int(11).
Den Unix Timestamp zur aktuellen Zeit erhältst Du per
<?php
$timeCurrent = time(); // TS zur aktuellen Zeit
?>
Timestamp für ein beliebigen Datum mit mktime();
Die Umrechnung eines Timestamps in ein normales Datum erfolgt z.B. per
<?php
$dateNormal = date(\'d.m.Y, H:i:s\', $timeCurrent); // ergibt 18.01.2011, 12:00:00
?>
Nun zu Excel:
Die Umrechnung eines Excel-Datums in einen Unix Timestamp erfolgt so:
Tabellenspalte A: "01.01.1970 00:00"
Tabellenspalte B: (Dein Datum, z.B.) "18.01.2011 12:03"
Formel für Spalte C: =(B1-A1)*24*60*60-(7200)
In Spalte C findest Du dann den Unix Timestamp. Die 7200 stehen für die Umrechnung Sommer- / Winterzeit. Diesen Wert musst Du je nach Datum ggf. anpassen.
Das Beispiel ist auch mit OpenOffice lauffähig.
Grüße,
Matthias
SEO Analyse und Website-Check mit Seitenreport
gelöschter Benutzer
Hallo zusammen!
Danke schon mal für Eure Hilfe soweit.
Ich werde das später mal versuchen hinzubekommen.
@Joerg:
Ich habe eine Excel-Liste, in dem die Kurse eines Sportvereines stehen.
Dort habe ich auch zwei Uhrzeit-Felder. Einmal \'von\' und einmal \'bis\'. Diese sind mit dem Excel-Format Zeit 13:30 (was man im entsprechenden Menü auswählen kann) belegt.
Und diese möchte ich in die Datenbank einlesen, um sie hier auszugeben.
Wenn ich der Mysql-Datenbank nicht sage, welches Format sie beim Import nehmen soll, nimmt sie automatisch das Dezimal-Format.
Und das wieder rückzuverwandeln ist glaube ich noch etwas umständlicher und sollte - wie ich gelesen habe - eher von / in der DB passieren, als im php-Skript.
Danke nochmal für Eure Hilfe.
Marcus
gelöschter Benutzer
Hi Marcus,
Wie genau machst du den Import?
Ich hatte es mal mit CSV und phpMyAdmin gemacht und keine Probleme. Das Datumsformat wurde immer richtig erkannt.
@Matthias: Den Unix Timestamp sollte man lieber nicht in Datenbanken nutzen. Die Berechnungen sind viel Komplizierter wenn man die Länge der Monate (28, 29, 30 o. 31 Tage) berücksichtigen muss. Außerdem hat man in 17 Jahren ein kleines Problem damit und Daten vor 1970 kann man damit auch nicht verarbeiten.
Außerdem sind sie Fehler anfälliger, unter 1295364715 weis man nicht welches Datum dahinter steckt, das erschwert die Fehlersuche.
Viele Grüße Thomas
joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
gelöschter Benutzer
Hallo zusammen!
Wenn ich Thomas\' Antwort lese, weiß ich wohl auch welches:
Ich importiere sie als normale Excel-Datei. Also mit xls-Endung
EDIT: Ich habs jetzt endlich soweit eingelesen. Jetzt kriege ich es sicherlich auch noch gebacken, die deutschen Umlaute anzuzeigen
gelöschter Benutzer
joerg schrieb:
....
echo date("M-d-Y", mktime(0, 0, 0, 12, 31, 3070));
gibt mir Dec-31-3070 aus.
....
Bei mir kommt Jan-01-1970, der Grund bei 32-bit Systeme besteht ein int nur aus 32 bit. Das lässt kein größeres Datum zu. Diese Rechnung geht maximal bis zum Jan-19-2038.
Das ist aber jetzt kein großes Problem.
@ Marcus: Am besten stellst du beim speichern (strg + shift + s) den Zeichensatz UTF8 ein und beim Import auch wieder UTF8. Dann sollte alles korrekt in der DB sein.
Gruß Thomas
gelöschter Benutzer
Hallo Thomas!
Danke für den Hinweis!
Ich hatte das noch hinbekommen, indem ich beim importieren latin-1 als Zeichensatz angegeben habe.
@all:
Danke noch mal für Eure Hilfe
Das Seitenreport Forum hat aktuell 5275 Themen und 36110 Beiträge.
Insgesamt sind 48360 Mitglieder registriert.
Beitrag erstellen
EinloggenKostenlos registrieren