Zeit-Format
HaeS
- php
-1 frankx-1 Maus0 HaeS-1 Maus0 Tobias Kloth0 Maus
0 HaeS
0 Tobias Kloth0 HaeS0 HaeS (gelöst)0 Tobias Kloth0 HaeS
Hallo!
Ich habe eine Uhrzeit im Format "time" in einer MySQL-Datenbank gespeichert. Die Form ist 00:00:00, wobei ich die letzten beiden Ziffern, also die Sekunden eigentlich nicht benötige.
Daraus resultiert auch meine Frage. Ich will die Uhrzeit in der Form 00:00 (also Stunden:Minuten) ausgeben. Habe versucht in phpmyadmin einfach das Speicher-Standard zu ändern, das bringt aber nichts.
Wie kann ich in php die Variable so ändern, dass er mir die Sekunden abschneidet?
Die Uhrzeit wird in der Variable $anfang gespeichert!
Mein Quelltext:
$result=(mysqlabfrage);
while ($line = mysql_fetch_array($result)) {
$id = $line[id];
$anfang = $line[anfang];
echo $anfang;
}
Hallo
ich dachte, die Zeit wird grundsätzlich in Sekunden ab 1.1.1970 gespeichert. Wie Du sie dann ausgibst, kannst Du mit PHP beliebig einstellen.
Gruß, Frankx
echo $begrüßung;
ich dachte, die Zeit wird grundsätzlich in Sekunden ab 1.1.1970 gespeichert.
Das wäre für eine Datenbank sehr ungünstig, da man darin auch mal Daten vor 1970 aufnehmen möchte.
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html
echo "$verabschiedung $name";
alert ('hallo'),
tja, das mit dem Denken ist manchmal so eine Sache;
Person::Abschied($verabschiedund,$meinName);
Hallo,
hast du dir schon mal überlegt, das Datum einfach zu formatieren bei der Ausgabe?
Ich z.B. mache das so:
<?php echo date("H:i",$Row['datum']) ?>
Gruß Maus
<?php echo date("H:i",$Row['datum']) ?>
Dann stimmt zwar die Formatierung aber die er rechnet die Zeit falsch um. In der Datenbank ist die Zeit 06:10:00 gespeichert. Wenn ich die Ausgabe wie oben formatiere gibt er mir 01:00 aus. Wenn ich dann zum testen "H:i:s" ausgebe ist die Ausgabe 01:00:06
Also irgendwie alles verdreht!?
Hallo,
was für ein Feldtyp hast du denn in der Datenbank stehen. Mach mal bitte daraus DateTime und beim eintragen machst du das dann so NOW()
Dann kannst du das auch so formatieren wie ich dir das oben genannt habe.
Gruß Maus
Hallo,
was für ein Feldtyp hast du denn in der Datenbank stehen. Mach mal bitte daraus DateTime und beim eintragen machst du das dann so NOW()
Was soll der OP denn mit eine Feld mit dem Type DATETIME wenn er nur die Zeit braucht? - zumal die PHP-Funktion date() auch mit diesem Format nichts anfangen kann (außer man verwendet UNIX_TIMESTAMP() im Query).
Grüße aus Nürnberg
Tobias
Hallo,
aha
Gruß Maus
was für ein Feldtyp hast du denn in der Datenbank stehen. Mach mal bitte daraus DateTime und beim eintragen machst du das dann so NOW()
Der Feldtyp ist time, ich will ja nur eine Uhrzeit und kein Datum! Soll ich trotzdem auf DATETIME umstellen? Ich will auch nicht die aktuelle Uhrzeit (die bekomme ich ja mit NOW()) sondern eine x-beliebige.
Hallo,
Wie kann ich in php die Variable so ändern, dass er mir die Sekunden abschneidet?
theoretisch könntest du das mit substr() machen - einfacher wäre es aber direkt im Query die Funktion TIME_FORMAT() zu verwenden.
$id = $line[id];
$anfang = $line[anfang];
Grüße aus Nürnberg
Tobias
Hab das Query jetzt geändert, im MySQL-Monitor auf der Konsole wirds mir auch richtig ausgegeben.
mysql> SELECT *, TIME_FORMAT(anfang, '%H:%i') FROM tabelle1;
id name anfang TIME_FORMAT(anfang, '%H:%i')
----+-------+-----------+-------------------------------+
1 | NAME1 | 06:10:00 | 06:10 |
----+-------+-----------+-------------------------------+
2 | NAME2 | 08:30:00 | 08:30 |
----+-------+-----------+-------------------------------+
Aber wie spreche ich jetzt die formatierte Ausgabe an:
Mein Script:
$result = mysql_query("SELECT *, TIME_FORMAT(anfang, '%H:%i') FROM tabelle1");
while ($line = mysql_fetch_array($result)) {
$name = $line['name'];
$anfang = $line['anfang'];
echo $name;
echo $anfang;
}
Das Script soll mir dann den Namen mit der zugehörigen Anfangszeit ausgeben. Dazu noch einige andere Werte, aber die habe ich wegen der besseren Übersicht weggelassen!
Warum ist $foo[bar] falsch?]
Danke für den Hinweis, habs geändert!
Bin gerade selber draufgekommen:
Ich muss einfach die Spaltennummer angeben anstatt des Spaltennamen also z.B.
$anfang = $line['2'];
Vielen Dank an alle für die Tips!
Hallo,
Aber wie spreche ich jetzt die formatierte Ausgabe an:
vergib ein Alias (mit 'as'):
SELECT TIME_FORMAT(anfang, '%H:%i') as anfang FROM tabelle1
dann kannst du die Zeile wieder mit $line['anfang'] ansprechen. btw: Warum soll ich nicht SELECT * schreiben?
Grüße aus Nürnberg
Tobias
» vergib ein Alias (mit 'as'):
Werd ich mal ausprobieren!
»Warum soll ich nicht SELECT * schreiben?
Danke für den Tip, ich änders sofort um :-)