gelöschter Benutzer

Uhrzeit ausgeben

am 17.01.2011, 21:57 Uhr eröffnete folgenden Thread
PHP & MySQL    4276 mal gelesen    10 Antwort(en).

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
am 17.01.2011, 22:24 Uhr schrieb

Hallo Marcus,

du musst es nur auf TIME stellen dann geht es schon.

Gruß Thomas



gelöschter Benutzer
am 18.01.2011, 11:14 Uhr schrieb

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
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 18.01.2011, 11:59 Uhr schrieb joerg

Hallo Marcus

Vielleicht hilft dir das ja bei deinem Problem.

dev.mysql.com/doc/refman/5.1/de/time.html



Und wenn das nichts hilft wäre es wohl besser genauer zu schildern was du erreichen möchtest.

Vor allen Dingen wie entstehen die Daten wäre dann auch hilfreich.

Gruß
Jörg


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

seitenreport
Avatar seitenreport
Inhaber
TYPO3 Senior Developer
Content Gott (1772 Beiträge)
am 18.01.2011, 12:05 Uhr schrieb seitenreport

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
am 18.01.2011, 15:38 Uhr schrieb

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
am 18.01.2011, 16:34 Uhr schrieb

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
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 18.01.2011, 17:27 Uhr schrieb joerg

Hallo Thomas

Also für fehlerhafte Eingaben als normales Datum gibt es diese Funktion.

www.php.net/manual/de/function.checkdate.php



Was die negativen Werte anbetrifft die werden seit PHP 5.1.0 unterstützt.

www.php.net/manual/de/function.mktime.php



Welches Problem habe ich denn in 27 Jahren damit?

echo date("M-d-Y", mktime(0, 0, 0, 12, 31, 3070));

gibt mir Dec-31-3070 aus.

@Marcus Ich habe auch eine Datenbank wo ich so ein Format verwende aber mit Time ist es wirklich kein Problem es dazustellen.

Also wirst du wohl ein Problem beim Import haben.

Gruß
Jörg


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools


gelöschter Benutzer
am 18.01.2011, 17:41 Uhr schrieb

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
am 18.01.2011, 18:00 Uhr schrieb

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
am 18.01.2011, 18:30 Uhr schrieb

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


  • 1


« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5273 Themen und 36107 Beiträge.
Insgesamt sind 48345 Mitglieder registriert.