Seite 1 von 2

timestamp auslesen

Verfasst: 22.12.2005 22:21
von kolja
nabend

ich wollte mal wissen wie man aus dem unix timestamp ein normales datum bekommt

am liebsten mit excel oder über ein php script

ich habe durch den site_history mod volgende daten:

Code: Alles auswählen

-- 
-- Tabellenstruktur für Tabelle `phpbb2_site_history`
-- 

CREATE TABLE `phpbb2_site_history` (
  `date` int(11) NOT NULL default '0',
  `reg` mediumint(8) NOT NULL default '0',
  `hidden` mediumint(8) NOT NULL default '0',
  `guests` mediumint(8) NOT NULL default '0',
  `new_topics` mediumint(8) NOT NULL default '0',
  `new_posts` mediumint(8) NOT NULL default '0',
  UNIQUE KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- 
-- Daten für Tabelle `phpbb2_site_history`
-- 

INSERT INTO `phpbb2_site_history` VALUES (1117306800, 11, 1, 2, 2, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117310400, 11, 1, 1, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117314000, 12, 1, 2, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117317600, 1, 0, 0, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117324800, 1, 0, 1, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117328400, 1, 0, 1, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117339200, 1, 0, 2, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117346400, 2, 0, 0, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117360800, 3, 0, 1, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117364400, 4, 0, 2, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117368000, 4, 0, 1, 0, 1);
INSERT INTO `phpbb2_site_history` VALUES (1117371600, 5, 0, 2, 0, 1);
INSERT INTO `phpbb2_site_history` VALUES (1117375200, 6, 0, 2, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117378800, 7, 0, 1, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117382400, 7, 0, 0, 0, 2);
INSERT INTO `phpbb2_site_history` VALUES (1117386000, 8, 0, 1, 0, 0);
INSERT INTO `phpbb2_site_history` VALUES (1117389600, 8, 0, 2, 0, 1);
INSERT INTO `phpbb2_site_history` VALUES (1117393200, 9, 0, 2, 0, 0);

und daraus möchte ich jetzt gerne ein diagram machen (excel)

danke kolja

Verfasst: 22.12.2005 22:26
von CatZe

Verfasst: 22.12.2005 22:53
von kolja
danke für die schnelle antwort

aber auf diese seite bin ich durch google auch schon gestossen
leider wird mir da aber keine lösung raus ersichtlich

mein problem ist, dass ich über 300 von den zeilen habe und iun jeder der timestamp umgerechnet werden muss

kolja

Verfasst: 22.12.2005 23:06
von PhilippK
  • In Excel: Versuch mal die Formel

    Code: Alles auswählen

    =DATUM(1970;1;1)+(B1/86400)
    wobei B1 auf den Timestamp verweist
  • Direkt in phpMyAdmin: Mit dem Aufruf

    Code: Alles auswählen

    FROM_UNIXTIME(timestamp)
    im SQL-Statement kannst du das direkt in einem lesbaren Format ausgeben lassen
Gruß, Philipp

Verfasst: 22.12.2005 23:42
von kolja
danke für die beiden ansätze

der in excel funktioniert !!!

aber den in phpmyadmin verstehe ich nicht so ganz
wo muss ich den einbringen ??

kolja

Verfasst: 22.12.2005 23:55
von fanrpg
na ja wenn du so viele Zeilen hast würde ich die auslesen und einer Schleife ausrechnen legen so ungefähr:

Code: Alles auswählen

$datum = array();
$sql = "SQL";
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result))
{
$datum[] = date("d.m.Y H:i", $row['timestamp']);
}
Dann musst du später den Array nur noch ausgeben lassen :wink:

Verfasst: 23.12.2005 00:07
von kolja
thx@fanrpg den suchte ich eigentlich

aber das mit ecxel ist noch ein bischen komfortabeler

nur bekomme ich mehrere einträge pro tag ...

wie schaffe ich es denn jetzt das ich pro tag nur eine zeile habe mit den werten des gesamten tages ??

hier mal ein ausschnit der excel tabelle

Code: Alles auswählen

datum	unix time stamp	reg	hidden	guest	topics	posts
28.05.2005	1117306800	11	1	2	2	0
28.05.2005	1117310400	11	1	1	0	0
28.05.2005	1117314000	12	1	2	0	0
28.05.2005	1117317600	1	0	0	0	0
29.05.2005	1117324800	1	0	1	0	0
29.05.2005	1117328400	1	0	1	0	0
29.05.2005	1117339200	1	0	2	0	0
29.05.2005	1117346400	2	0	0	0	0
29.05.2005	1117360800	3	0	1	0	0
29.05.2005	1117364400	4	0	2	0	0
29.05.2005	1117368000	4	0	1	0	1
29.05.2005	1117371600	5	0	2	0	1
29.05.2005	1117375200	6	0	2	0	0
29.05.2005	1117378800	7	0	1	0	0
29.05.2005	1117382400	7	0	0	0	2
29.05.2005	1117386000	8	0	1	0	0
29.05.2005	1117389600	8	0	2	0	1
29.05.2005	1117393200	9	0	2	0	0
29.05.2005	1117396800	10	0	2	1	0
29.05.2005	1117400400	11	0	1	0	0
29.05.2005	1117404000	3	0	1	0	5
29.05.2005	1117407600	3	0	1	0	1
30.05.2005	1117414800	3	0	1	0	0
30.05.2005	1117436400	6	0	6	0	0
30.05.2005	1117440000	7	0	5	1	2
30.05.2005	1117443600	7	0	1	0	0
30.05.2005	1117450800	8	0	1	0	0
30.05.2005	1117458000	8	0	2	0	0
30.05.2005	1117461600	9	0	4	0	1
30.05.2005	1117465200	9	0	1	0	0
30.05.2005	1117468800	9	0	3	2	0
30.05.2005	1117472400	11	0	3	0	0

Verfasst: 23.12.2005 00:34
von fanrpg

Code: Alles auswählen

$datum = array(); 
$sql = "SQL WHERE datum = '". date('d.m.Y', time()) ."'"; 
$result = $db->sql_query($sql); 
while($row = $db->sql_fetchrow($result)) 
{ 
$datum[] = date("d.m.Y H:i", $row['timestamp']); 
}
Dann liest er nur den aktuellen Tag aus, das kannst du dann anpassen wie du willst.

Verfasst: 23.12.2005 00:44
von kolja
@fanrpg

hab mich gerade ein wenig mit dem php code beschäftigt, hab aber leider keien konkrete idee wie ich den benutzen muss

kolja

p.s. wie gesagt, ist genau das was ich brauche

edit,
der ansatz ist doch in einem script die datenbank abzufragen, alle zeilen in einem array zu speichern, darüber deine schleife laufen lassen, und dann ausgeben lassen

soweit so gut

ich werd mich mal mit dem 1. punkt auseinandersetzen

kolja

Verfasst: 23.12.2005 01:42
von kolja
ok punkt 1 ist erledigt

nur bekomme ich die daten nicht in einen array um sie für deinen code bereitzustellen

hier mal mein "code zusammen geklaue":


Code: Alles auswählen

<?php
$db_host   =       "hier";
$db_user   =       "ich";
$db_pass   =       "geheim";

$datab  =          "tabelle";


function print_result_table($result){
// hier das richtige schreiben
}

// Hauptprogramm

/* Verbindung zur Datenbank aufbauen */
$db = @mysql_connect($db_host,$db_user,$db_pass)
      or die(mysql_error());
@mysql_select_db($datab,$db) or die(mysql_error());

/* HTML-Startcode ausgeben */
echo "<html>\n<body>\n";

/* SQL-Abfrage */

$ergebnis = mysql_query ("SELECT * FROM phpbb2_site_history") or die ("SQL-Fehler"); 	
while ($zeile = mysql_fetch_array($ergebnis))
{
$var=$zeile['date'] ;
$var1=$zeile['reg'] ;
$var2=$zeile['hidden'] ;
$var3=$zeile['guests'] ;
$var4=$zeile['new_topics'] ;
$var5=$zeile['new_posts'] ;


echo "$var $var1 $var2 $var3 $var4 $var5 <BR>";
} 	
mysql_close ();
 ?>
aber das sollte für heute erstmal reichen

gute nacht kolja