PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   php und MySQL Timestamp (http://www.selfphp.de/forum/showthread.php?t=8115)

crowl 07.07.2004 15:24:59

php und MySQL Timestamp
 
Ich lasse mir bei jedem Datensatzeintrag in die MySQL Tabelle automatisch einen Timestamp von MySQL generieren (MySQL Type: timestamp(14)).

In der Datenbank sieht der Eintrag des Timestamp z.B. so aus:
20040707135123

Lese ich diesen Wert mit PHP aus, und will ihn formatiert anzeigen, klappt das nicht.

Das Ergebnis von:
date("l dS of F Y h:i:s A", $row['mytime']);
ist:
Tuesday 19th of January 2038 04:14:07 AM

Was auf einen falschen Timestamp hindeutet. Den Timestamp ha ich -wie schon gesagt- automatisch von MySQL generieren lassen.

Unterstützen die PHP funktionen nur Unix Timestamps?

Über die MySQL Funktion Date() kann ich das Datum schon bei der SQL Abfrage formatieren lassen. Das ist aber nicht ganz das was ich möchte. Kann man mit PHP Mitteln keinen MySQL Timestamp formatieren?

chris17 07.07.2004 15:29:57

Hi crowl,

eine Möglichkeit...
PHP-Code:

function mysql_timestamp2german($t) {
    return 
sprintf("%02d.%02d.%04d %02d:%02d:%02d",
                
substr($t62),
                
substr($t42),
                
substr($t04),
                
substr($t82),
                
substr($t102),
                
substr($t122));
}

echo 
mysql_timestamp2german('20040707135123'); 

Gruss

xabbuh 07.07.2004 15:30:34

date() kannst du nur auf Unix-Timestamps anwenden.

Trotzdem kannst du den Timestamp, den MySQL generiert, mit php verarbeiten. substr hilft dir weiter ($zeit ist der Timestamp aus der Datenbank):

PHP-Code:

$jahr=substr($zeit04);
$monat=substr($zeit42);
$tag=substr($zeit62);
$stunde=substr($zeit82);
$minute=substr($zeit102);
$sekunde=substr($zeit122); 

Edit: Da war Chris17 wohl schneller.


Noch ein Nachtrag: Du kannst auch folgende Funktion verwenden:

PHP-Code:

<?php
function dateMysql($format$zeit){
    
$jahr=substr($zeit04);
    
$monat=substr($zeit42);
    
$tag=substr($zeit62);
    
$stunde=substr($zeit82);
    
$minute=substr($zeit102);
    
$sekunde=substr($zeit122);

    
$zeit=mktime($stunde$minute$sekunde$monat$tag$jahr);

    return 
date($format$zeit);
}
?>
echo dateMysql('d.m.Y', '20040707135123');

Ausgegeben werden solllte dann "07.07.2004".

tapferesschneid 08.07.2004 01:33:33

Wenn Du die Daten nicht noch für weitere Berechnungen brauchst, kannst Du sowas auch direkt bei der Abfrage erledigen, z. B.:
Code:

SELECT DATE_FORMAT(`mysql_timestamp`, "%W %M %d, %Y %r") ...
Unix-Timestamp zum Weiterverwenden geht so:
Code:

SELECT select UNIX_TIMESTAMP(`mysql_timestamp`) ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:26:02 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.