Spara och läsa timestamps

PHP

11 svar · 248 visningar · startad av Alpha II

Medlem sedan maj 20002 993 inlägg
Trådstart#1

Hej!
Hur sparar man ett timestamp i en databas och hur hur formaterar man det på sidan? När jag försöker att formatera ett timestamp ("m/d/Y") så blir det 01/19/2038. Hur ska jag göra för att spara en tid och sedan kunna läsa den?

Medlem sedan juni 20008 205 inlägg
#2

MySQL? Kolla in funktionen DATE_FORMAT (eller var det FORMAT_DATE?) i din dokumentation.

Medlem sedan feb. 2000280 inlägg
#3

Jag tycker det är lättare att spara in den med php's time() function sedan använda functionen strftime() när man skall omformatera..

Medlem sedan maj 20002 993 inlägg
#4

BABBA, det är så jag har gjort men va fan(!) det funkar ju inte!

Medlem sedan juni 20001 251 inlägg
#5

Lägg till:

<?
$timestamp=time();
mysql_query("INSERT INTO datumtest (id, datum) VALUES ('1', '$timestamp')");
?>

Formatera:

<?
$hamta = mysql_fetch_array(mysql_query("select * from datumtest where id='1'"));
$datum=date("m/d/Y",$hamta[1]);
echo $datum;
?>

------------------
SteveNet

Medlem sedan maj 20002 993 inlägg
#6

Det fungerar att formatera datumet i queryn men inte med date. :(
Varför är timestampen i php i ett annat format än i mysql?

Varför fungerar inte det här?

$lmodified = filemtime("filnamn.txt");
if($lmodified > $variabel_från_databas["LastModified"]) {
mysql_query("UPDATE FileList SET LastModified='$lmodified' WHERE ID='1'");
Medlem sedan juni 200145 inlägg
#7

om jag vill timestampa någonting brukar jag oftast använda date("U") som returnerar linuxtime

har även gjort ett php & mysql login script som baseras på linuxtime .. fungerar mycket bättre än sessioner & mysql enligt mig..

MVH

Medlem sedan juni 200145 inlägg
#8

vill bara påpeka att jag menar unix time, inte linuxtime ;)

undra va linux time kan vara egentligen.. måste ju finnas

Medlem sedan maj 200139 inlägg
#9

Kanske kan påpeka att timestamp i MySQL ändras när man ändrar något i den posten. Det gör att den sätts automatiskt när du ändrar det andra fältet 'id'.
Det betyder att detta:
<?
$timestamp=time();
mysql_query("INSERT INTO datumtest (id, datum) VALUES ('1', '$timestamp')");
?>
gör sama sak som detta:
<?
mysql_query("INSERT INTO datumtest (id) VALUES ('1')");
?>

Medlem sedan maj 20002 993 inlägg
#10

Men varför blir timestampen olika i php och mysql? Hur gämför man tid?

$lmodified = filemtime("filnamn.txt");
if($lmodified > $timestamp_från_databas)
bla bla bla

Den här koden fungerar inte eftersom $timestamp_från_databas:s format inehåller fler siffror än $lmodified...

Medlem sedan juni 200145 inlägg
#11

anledningen till att de blir olika är väl bara att det är olika standarder. mysql har sin och php har sin

jag kanske har fel, men ser ingen annan bra förklaring på problemet

Medlem sedan maj 200139 inlägg
#12

MySQL har det här formatet:
YYYYmmddhhmmss
Man kan i tabellen sätta att den endast ska använda ett visst antal siffror räknat från vänster. Om du sätter det till 10 så blir formatet:
YYYYmmddhh
Formatet som filemtime() ger dig verkar vara unixtime.
Du får då formatera det med date() som nedan:
$lmodified=date("Ymdhis", filemtime($file));

Hoppas att det hjälper dig.

[Redigerat av Bones_Junior den 07 jun 2001]

268 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)