|
| 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.
| |
|
|