/ 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
MySQL: Formattering af dato-felt
Fra : Peter J


Dato : 25-02-05 22:48

Hej igen,

Så er den gal igen

I min MySQL database har jeg et felt kaldet "dato". Datatypen er angivet som
date, og data indplottes derfor som åååå-mm-dd.

Jeg vil gerne have vist datoerne som dd.mm.åååå, og derfor er jeg nødt til
at ændre på nedenstående kode... Efter at have googlet rundt, og forsøgt mig
med adskillige mystiske ting, er jeg ikke nået videre. Hvad skal der gøres
ved nedenstående kode?

$dato=mysql_result($result,$i,"dato");
echo "Dato: $dato";

mvh
Peter



 
 
Troels Arvin (25-02-2005)
Kommentar
Fra : Troels Arvin


Dato : 25-02-05 22:51

On Fri, 25 Feb 2005 22:48:10 +0100, Peter J wrote:

> Jeg vil gerne have vist datoerne som dd.mm.åååå

Hvis jeg var dig, ville jeg i min SQL sørge for at køre datoerne gennem
UNIX_TIMESTAMP(...) og så benytte PHP's strftime()-funtion på værdierne
fra MySQL. SQL'en bliver godtnok lidt mere SQL-implementationsspecifik på
den måde.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Peter J (25-02-2005)
Kommentar
Fra : Peter J


Dato : 25-02-05 22:55

"Troels Arvin" <troels@arvin.dk> skrev

> Hvis jeg var dig, ville jeg i min SQL sørge for at køre datoerne gennem
> UNIX_TIMESTAMP(...) og så benytte PHP's strftime()-funtion på værdierne
> fra MySQL. SQL'en bliver godtnok lidt mere SQL-implementationsspecifik på
> den måde.

Jeg er ret newbee, hvad angår både PHP og MySQL - men før jeg dykker mere
ned i denne løsning, skal det måske nævnes at jeg skal operere med datoer
helt tilbage til 1949 - gør det nogen forskel? (har læst noget om en
skæringsdato ved 1.1.1970)

mvh
Peter



Troels Arvin (25-02-2005)
Kommentar
Fra : Troels Arvin


Dato : 25-02-05 23:10

On Fri, 25 Feb 2005 22:55:03 +0100, Peter J wrote:

> før jeg dykker
> mere ned i denne løsning, skal det måske nævnes at jeg skal operere med
> datoer helt tilbage til 1949 - gør det nogen forskel?

Ja, det gør en forskel. På visse unix-afarter kan man godt operere med
negative timestamps, men det ville jeg ikke stole på.

I dit sted ville jeg da undersøge, om ikke MySQL understøtter, at
datetimes udsendes i et specifikt format. Alternativt ville jeg måske
prøve, om PEAR's "Date"-pakke kan noget relevant:
http://pear.php.net/package/Date

--
Greetings from Troels Arvin, Copenhagen, Denmark


Peter J (25-02-2005)
Kommentar
Fra : Peter J


Dato : 25-02-05 23:20


"Troels Arvin" <troels@arvin.dk> skrev
> Ja, det gør en forskel. På visse unix-afarter kan man godt operere med
> negative timestamps, men det ville jeg ikke stole på.

Tænkte du nok. Som skrevet i et andet indlæg, har jeg ellers fundet en
løsning, som virker på nyere datoer. Æv...

> I dit sted ville jeg da undersøge, om ikke MySQL understøtter, at
> datetimes udsendes i et specifikt format. Alternativt ville jeg måske
> prøve, om PEAR's "Date"-pakke kan noget relevant:
> http://pear.php.net/package/Date

Det vil jeg kigge nærmere på.
Tak for hjælpen

Peter



Peter J (25-02-2005)
Kommentar
Fra : Peter J


Dato : 25-02-05 23:15

"Peter J" <spam@nej.for.pokker> skrev

Så langt så godt - nedenstående kode konverterer datoen til det format jeg
ønsker. Men den virker ikke ved datoer før 1.1.1970 - er der en (let) måde
at fikse det på?

$dato=mysql_result($result,$i,"dato");

function formatdate($sqldate)
{
list($yyyy, $mm, $dd) = explode('-',$sqldate);
$phpdate = date('j.n.Y', mktime(0,0,0,$mm,$dd,$yyyy));
return $phpdate;
}

$fdato = $dato;
$fdato = formatdate($fdato);

echo "Dato: $fdato";


mvh
Peter



Leonard (25-02-2005)
Kommentar
Fra : Leonard


Dato : 25-02-05 23:30

"Peter J" <spam@nej.for.pokker> wrote:

>date, og data indplottes derfor som åååå-mm-dd.

>Jeg vil gerne have vist datoerne som dd.mm.åååå, og derfor er jeg nødt til

>$dato=mysql_result($result,$i,"dato");

$dato = substr($dato,9,2).".".substr($dato,6,2).".".substr($dato,1,4);

>echo "Dato: $dato";

Det er utestet, så måske skal du rette lidt på tallene 9, 6 og 4.

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Peter J (26-02-2005)
Kommentar
Fra : Peter J


Dato : 26-02-05 00:01


"Leonard" <usenet@leonard.dk> skrev

> Det er utestet, så måske skal du rette lidt på tallene 9, 6 og 4.

Muligvis var det utestet, men det var også genialt! Der skulle ganske vist
rettes lidt på de tre nævnte tal, men nu virker det!

$dato = substr($dato,8,2).".".substr($dato,5,2).".".substr($dato,0,4);

Tak for hjælpen
Peter




Erling Veidal (26-02-2005)
Kommentar
Fra : Erling Veidal


Dato : 26-02-05 16:36

>
> $dato=mysql_result($result,$i,"dato");
> echo "Dato: $dato";
>
Hvis du bare vil have datoen printet som dd.mm.åååå gør du følgende:
echo "Dato: date("d-m-Y",$dato)";

Det burde virke!

Erling

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Troels Hansen (26-02-2005)
Kommentar
Fra : Troels Hansen


Dato : 26-02-05 16:52

Erling Veidal wrote:
> Hvis du bare vil have datoen printet som dd.mm.åååå gør du følgende:
> echo "Dato: date("d-m-Y",$dato)";
>
> Det burde virke!
>
> Erling

Eller simpelthen bare bruge mySql til at formatere datoen.
"SELECT DATE_FORMAT(dato, '%d.%m.%Y') AS dkdato FROM table"

Leonard (26-02-2005)
Kommentar
Fra : Leonard


Dato : 26-02-05 17:02

Troels Hansen <nouser@ffelsaa.dk> wrote:

>> Hvis du bare vil have datoen printet som dd.mm.åååå gør du følgende:
>> echo "Dato: date("d-m-Y",$dato)";

>Eller simpelthen bare bruge mySql til at formatere datoen.
>"SELECT DATE_FORMAT(dato, '%d.%m.%Y') AS dkdato FROM table"

Hvis I nu læste hele tråden ville I se at det ikke virker i dette
tilfælde, da datoen er gemt somm åååå-mm-dd og der skal bruges datoer
tilbage før 1970.

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Troels Hansen (26-02-2005)
Kommentar
Fra : Troels Hansen


Dato : 26-02-05 17:42

Leonard wrote:
> Hvis I nu læste hele tråden ville I se at det ikke virker i dette
> tilfælde, da datoen er gemt somm åååå-mm-dd og der skal bruges datoer
> tilbage før 1970.

Og hvor opstår problemet??? Ikke i mysql!
A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL
displays DATE values in 'YYYY-MM-DD' format, but allows you to assign
values to DATE columns using either strings or numbers.

SELECT dato FROM tabel
1949-10-23

SELECT DATE_FORMAT(dato, '%d.%m.%Y') AS dkdato FROM table
23.10.1949

Leonard (26-02-2005)
Kommentar
Fra : Leonard


Dato : 26-02-05 18:11

Troels Hansen <nouser@ffelsaa.dk> wrote:

>Og hvor opstår problemet??? Ikke i mysql!

OK, så har jeg også lært noget nyt i dag.

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Troels Hansen (27-02-2005)
Kommentar
Fra : Troels Hansen


Dato : 27-02-05 09:31

Leonard wrote:

> OK, så har jeg også lært noget nyt i dag.
>

Jeg tror det man forveksler det med er problemer med 2 cifrede årstal,
ex 49 i stedet for 1949, og unix timestamp, hvor der vil opstå problemer.

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

Månedens bedste
Årets bedste
Sidste års bedste