/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Dato fra MySQL
Fra : Allan Jensen


Dato : 12-01-03 10:51

Hvorfor bliver mine tider ikke formateret ordenligt når de kommer fra
MySQL?

$currStart = $row["TimeStart"]; //felttype: TIME (hh.mm.ss)
echo $currStart //dette giver f.eks. 18:00:00

$currStart = date("G.i", $currStart);
echo $currStart //men dette giver uanset input: 1.00

Bruger jeg en forkert funktion eller hvad?


 
 
Mads Lie Jensen (12-01-2003)
Kommentar
Fra : Mads Lie Jensen


Dato : 12-01-03 11:03

On Sun, 12 Jan 2003 10:50:55 +0100, Allan Jensen <public@hverdag.dk>
wrote:

>Hvorfor bliver mine tider ikke formateret ordenligt når de kommer fra
>MySQL?
>
>$currStart = $row["TimeStart"]; //felttype: TIME (hh.mm.ss)
>echo $currStart //dette giver f.eks. 18:00:00
>
>$currStart = date("G.i", $currStart);
>echo $currStart //men dette giver uanset input: 1.00
>
>Bruger jeg en forkert funktion eller hvad?

Njaa.. det andet argument til date() skal være et timestamp. Men hvis du
'bare' henter et time-felt ud fra mySQL så får du det som f.eks
11:03:45.
Et timestamp derimod er antallet af sekunder siden 1-1-1970.
For at få et timestamp ud fra mySQL kan du f.eks bruge
SELECT UNIX_TIMESTAMP(TimeStart) AS TimeStart FROM table;

Så vil du få et heltal, antallet af sekunder siden 1-1-1970, som direkte
kan gives til date().

--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
Lær af andres fejl
- du lever alligevel ikke længe nok til selv at prøve dem alle.

Allan Jensen (12-01-2003)
Kommentar
Fra : Allan Jensen


Dato : 12-01-03 11:47

>>Hvorfor bliver mine tider ikke formateret ordenligt når de kommer fra
>>MySQL?
>>
>>$currStart = $row["TimeStart"]; //felttype: TIME (hh.mm.ss)
>>echo $currStart //dette giver f.eks. 18:00:00
>>
>>$currStart = date("G.i", $currStart);
>>echo $currStart //men dette giver uanset input: 1.00
>>
>>Bruger jeg en forkert funktion eller hvad?
>
>Njaa.. det andet argument til date() skal være et timestamp. Men hvis du
>'bare' henter et time-felt ud fra mySQL så får du det som f.eks
>11:03:45.
>Et timestamp derimod er antallet af sekunder siden 1-1-1970.
>For at få et timestamp ud fra mySQL kan du f.eks bruge
>SELECT UNIX_TIMESTAMP(TimeStart) AS TimeStart FROM table;

Det var da besværligt! Nå, men hvis der ikke er nogen anden
løsning...!


Allan Jensen (12-01-2003)
Kommentar
Fra : Allan Jensen


Dato : 12-01-03 11:47

>>Hvorfor bliver mine tider ikke formateret ordenligt når de kommer fra
>>MySQL?
>>
>>$currStart = $row["TimeStart"]; //felttype: TIME (hh.mm.ss)
>>echo $currStart //dette giver f.eks. 18:00:00
>>
>>$currStart = date("G.i", $currStart);
>>echo $currStart //men dette giver uanset input: 1.00
>>
>>Bruger jeg en forkert funktion eller hvad?
>
>Njaa.. det andet argument til date() skal være et timestamp. Men hvis du
>'bare' henter et time-felt ud fra mySQL så får du det som f.eks
>11:03:45.
>Et timestamp derimod er antallet af sekunder siden 1-1-1970.
>For at få et timestamp ud fra mySQL kan du f.eks bruge
>SELECT UNIX_TIMESTAMP(TimeStart) AS TimeStart FROM table;
>
>Så vil du få et heltal, antallet af sekunder siden 1-1-1970, som direkte
>kan gives til date().

Hmm, det virkede faktisk ikke, fordi der jo ikke var angivet nogen
dato i det timestamp - kun et tidspunkt. Så for at dette virker skal
jeg skrive:

UNIX_TIMESTAMP(CONCAT('2003-01-01 ',TimeStart)) AS TimeStartUnix

Men det gjorde det jo absolut ikke til nogen kønnere og nemmere
løsning!!


Jakob Bock (12-01-2003)
Kommentar
Fra : Jakob Bock


Dato : 12-01-03 11:31

Allan Jensen skrev:

> Hvorfor bliver mine tider ikke formateret ordenligt når de kommer fra
> MySQL?
>
> $currStart = $row["TimeStart"]; //felttype: TIME (hh.mm.ss)
> echo $currStart //dette giver f.eks. 18:00:00
>
> $currStart = date("G.i", $currStart);
> echo $currStart //men dette giver uanset input: 1.00
>
> Bruger jeg en forkert funktion eller hvad?

I stedet for at formatere dit TIME-felt i PHP, kan du gøre det direkte
i MySQL -- f.eks. vha. TIME_FORMAT:

SELECT TIME_FORMAT( TimeStart, "%k.%i" )

--
Venlig hilsen
Jakob Bock

Allan Jensen (12-01-2003)
Kommentar
Fra : Allan Jensen


Dato : 12-01-03 12:05

>> Hvorfor bliver mine tider ikke formateret ordenligt når de kommer fra
>> MySQL?
>>
>> $currStart = $row["TimeStart"]; //felttype: TIME (hh.mm.ss)
>> echo $currStart //dette giver f.eks. 18:00:00
>>
>> $currStart = date("G.i", $currStart);
>> echo $currStart //men dette giver uanset input: 1.00
>>
>> Bruger jeg en forkert funktion eller hvad?
>
>I stedet for at formatere dit TIME-felt i PHP, kan du gøre det direkte
>i MySQL -- f.eks. vha. TIME_FORMAT:
>
> SELECT TIME_FORMAT( TimeStart, "%k.%i" )

Okay, denne er da lidt pænere - bortset fra at sorteringen så ikke kan
finde ud af det, så jeg bliver nødt til at lave felt-referencen om i
stedet for at bruge det samme navn. Så tak for dette.


Joe (12-01-2003)
Kommentar
Fra : Joe


Dato : 12-01-03 12:17

Du skal være opmærksom på at at dato og tid håndteres forskelligt af php og
mysql.

Eksempelvis bruger php UNIX standart for timestamp, mens mysql (så vidt jeg
er orienteret) bruger sin egen standart.

Jeg tror dit problem er at du sender et forkert argument til date().
date() funktionen i php forventer et unix timestamp, og ikke en mysql date.

læs: http://www.php.net/manual/en/function.date.php

Så enten ændre du datatypen i din mysql database tabel og konvertere den til
unix-timestamp i din phpkode, eller du skrive selv en eller anden metode der
konvertere din mysql date til et unix-timestamp.

VH Joe

"Allan Jensen" <public@hverdag.dk> wrote in message
news:9pd22v829htk45pdaajbjtuicv1p0c6o7g@4ax.com...
> Hvorfor bliver mine tider ikke formateret ordenligt når de kommer fra
> MySQL?
>
> $currStart = $row["TimeStart"]; //felttype: TIME (hh.mm.ss)
> echo $currStart //dette giver f.eks. 18:00:00
>
> $currStart = date("G.i", $currStart);
> echo $currStart //men dette giver uanset input: 1.00
>
> Bruger jeg en forkert funktion eller hvad?
>



Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408658
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste