Du bist hier: Seitenreport    Forum    Web-Entwicklung    PHP & MySQL    Uhrzeit ausgeben

Uhrzeit ausgeben

Verfasst am: 17. 01. 2011 [21:57]
Gelöschter Benutzer
Beitrag hilfreich?

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

 
Verfasst am: 17. 01. 2011 [22:24]
Ultima
Dabei seit: 09.07.2010

759 Beiträge
Beitrag hilfreich?

Hallo Marcus,

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

Gruß Thomas

 
Verfasst am: 18. 01. 2011 [11:14]
Gelöschter Benutzer
Beitrag hilfreich?

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
 
Verfasst am: 18. 01. 2011 [11:59]
joerg
Dabei seit: 09.06.2009

1540 Beiträge
Beitrag hilfreich?

Hallo Marcus

Vielleicht hilft dir das ja bei deinem Problem.

http://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

 
Verfasst am: 18. 01. 2011 [12:05]
seitenreport
Dabei seit: 28.03.2009

Matthias Gläßner
Premium-Mitglied

1792 Beiträge
Beitrag hilfreich?

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
<?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
<?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

TYPO3 Freelancer | Gründer und Betreiber von Seitenreport
TYPO3 Anfragen: info@matthias-glaessner.de | XING-Profil
 
Verfasst am: 18. 01. 2011 [15:38]
Gelöschter Benutzer
Beitrag hilfreich?

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

[Dieser Beitrag wurde 2mal bearbeitet, zuletzt am 18.01.2011 um 15:39.]
 
Verfasst am: 18. 01. 2011 [16:34]
Ultima
Dabei seit: 09.07.2010

759 Beiträge
Beitrag hilfreich?

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

 
Verfasst am: 18. 01. 2011 [17:27]
joerg
Dabei seit: 09.06.2009

1540 Beiträge
Beitrag hilfreich?

Hallo Thomas

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

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

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

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

Welches Problem habe ich denn in 27 Jahren damit?

PHP
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

 
Verfasst am: 18. 01. 2011 [17:41]
Gelöschter Benutzer
Beitrag hilfreich?

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 icon_smile.gif

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 18.01.2011 um 17:59.]
 
Verfasst am: 18. 01. 2011 [18:00]
Ultima
Dabei seit: 09.07.2010

759 Beiträge
Beitrag hilfreich?

joerg schrieb:

....
PHP
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

[Dieser Beitrag wurde 2mal bearbeitet, zuletzt am 18.01.2011 um 18:16.]

 




Du bist nicht eingeloggt. Bitte beachte, dass Du eingeloggt sein musst, um Themen zu erstellen oder auf Beiträge zu antworten.

RSS Feed abonnieren

Werde in Echtzeit über neue Foren-Beiträge informiert:



7 Mitglieder waren innerhalb der letzten 15 Minuten online (63 heute gesamt):
bos987, defkon75, Filippo, KlausPilsner, ronny82, SchreiberNetzwerk

Administratoren und Moderatoren:
seitenreport

Seitenreport hat 18153 registrierte Mitglieder, 3003 Themen und 29112 Beiträge.
Der aktuelle Mitgliederzuwachs liegt bei durchschnittlich 12 bestätigten Neuregistrierungen pro Tag.
Pro Tag werden im Seitenreport Forum durchschnittlich 1 neues Thema und 7 Beiträge erstellt.
Die Durchschnittszahlen berechnen sich aus den letzten 7 Tagen.

Mehrfach empfohlen

Seitenreport ist einer der bekanntesten SEO und Website Analyse Dienste im deutschsprachigen Raum und wurde u.a. schon empfohlen:
von Mr. Wong im Wong Letter
vom Leserservice der Deutschen Post
vom Technik Blog SiN
und vielen anderen

Partnerprogramm

12% Lifetime Provision auf alle Buchungen von Dir geworbener Mitglieder sowie 0,50 € für jede Registrierung. Eines der besten deutschen Partnerprogramme laut den appCharts von 100partnerprogramme.de. Nimm jetzt teil am Seitenreport Partnerprogramm und verdiene gutes Geld dabei!

* = Partnerlinks