|
| Dato format i MySQL Fra : Morten Dall |
Dato : 23-02-03 22:07 |
|
Hej jeg køre på en MySQL server der ligger hos Azero.dk
i en af mine tabeller har jeg et dato feldt, men formatet på det er
Amerikansk altså feks. 2003-02-23
det syntes jeg jo er lidt dumt da brugerne, både når der skal intastes og
når det bliver udlæst, nok foretrækker 23-02-2003 kan man ikke ændre det ?
mvh Morten Dall
| |
Ukendt (23-02-2003)
| Kommentar Fra : Ukendt |
Dato : 23-02-03 22:13 |
|
"Morten Dall" <mrdall@knus.dk-slet-alt-efter-dk> skrev i en meddelelse
news:3e593671$0$52176$edfadb0f@dread16.news.tele.dk...
> Hej jeg køre på en MySQL server der ligger hos Azero.dk
> i en af mine tabeller har jeg et dato feldt, men formatet på det er
> Amerikansk altså feks. 2003-02-23
> det syntes jeg jo er lidt dumt da brugerne, både når der skal intastes og
> når det bliver udlæst, nok foretrækker 23-02-2003 kan man ikke ændre det ?
Så vidt jeg kan læse i online manualen til mySQL kan du ikke ændre på
formatet det gemmes på i databasen
( http://www.mysql.com/doc/en/Date_and_time_types.html), men hvis du f.eks.
bruger PHP til dit website kan du jo bare skille datostrengen ad med
explode() ved "-" og derefter samle den igen i den rækkefølge du ønsker det.
Nu ved jeg godt at dette ikke er en PHP gruppe men her får du lige et
eksempel på hvordan du kan lave en lille PHP funktion som klarer jobbet:
# Function for converting YYYY-MM-DD to DD-MM-YYYY
function datereverse ($datestring) {
$partdatestring = explode("-", $datestring);
$result = $partdatestring[2] . "-" . $partdatestring[1] . "-" .
$partdatestring[0];
return $result;
}
Håber at du kan bruge det til noget!
Claus
| |
Jonas Koch Bentzen (23-02-2003)
| Kommentar Fra : Jonas Koch Bentzen |
Dato : 23-02-03 22:32 |
|
"Claus Nygaard-Pedersen" <cnpatofir.dk> wrote:
>
> Så vidt jeg kan læse i online manualen til mySQL kan du ikke ændre på
> formatet det gemmes på i databasen
> ( http://www.mysql.com/doc/en/Date_and_time_types.html), men hvis du f.eks.
> bruger PHP til dit website kan du jo bare skille datostrengen ad med
> explode() ved "-" og derefter samle den igen i den rækkefølge du ønsker
> det.
Eller endnu nemmere:
$dato = mysql_result(mysql_query("SELECT UNIX_TIMESTAMP(dato) AS dato FROM
tabel"), 0);
$dato = date("d-m-Y H:i", $dato);
FUT: dk.edb.internet.webdesign.serverside.php
--
Jonas Koch Bentzen
http://findhim.com/
| |
Morten Dall (23-02-2003)
| Kommentar Fra : Morten Dall |
Dato : 23-02-03 22:58 |
|
tak til jer begge to,
desvære bruger jeg asp så jeg kan ikke uden vider bruge jeres eksembler, men
det giver mig da en ide om hvor vi skal hen
tak for hjælpen
mvh Morten Dall
"Jonas Koch Bentzen" <ingen.email@eksempel.dk> skrev i en meddelelse
news:b3bejj$4i2$1@sunsite.dk...
> "Claus Nygaard-Pedersen" <cnpatofir.dk> wrote:
> >
> > Så vidt jeg kan læse i online manualen til mySQL kan du ikke ændre på
> > formatet det gemmes på i databasen
> > ( http://www.mysql.com/doc/en/Date_and_time_types.html), men hvis du
f.eks.
> > bruger PHP til dit website kan du jo bare skille datostrengen ad med
> > explode() ved "-" og derefter samle den igen i den rækkefølge du ønsker
> > det.
>
> Eller endnu nemmere:
>
> $dato = mysql_result(mysql_query("SELECT UNIX_TIMESTAMP(dato) AS dato FROM
> tabel"), 0);
>
> $dato = date("d-m-Y H:i", $dato);
>
> FUT: dk.edb.internet.webdesign.serverside.php
>
> --
> Jonas Koch Bentzen
>
> http://findhim.com/
| |
Ukendt (27-02-2003)
| Kommentar Fra : Ukendt |
Dato : 27-02-03 15:05 |
|
On Sun, 23 Feb 2003 22:12:58 +0100, "Claus Nygaard-Pedersen"
<cnpatofir.dk> wrote:
>"Morten Dall" <mrdall@knus.dk-slet-alt-efter-dk> skrev i en meddelelse
>news:3e593671$0$52176$edfadb0f@dread16.news.tele.dk...
>> Hej jeg køre på en MySQL server der ligger hos Azero.dk
>> i en af mine tabeller har jeg et dato feldt, men formatet på det er
>> Amerikansk altså feks. 2003-02-23
>> det syntes jeg jo er lidt dumt da brugerne, både når der skal intastes og
>> når det bliver udlæst, nok foretrækker 23-02-2003 kan man ikke ændre det ?
>
>Så vidt jeg kan læse i online manualen til mySQL kan du ikke ændre på
>formatet det gemmes på i databasen
>( http://www.mysql.com/doc/en/Date_and_time_types.html), men hvis du f.eks.
>bruger PHP til dit website kan du jo bare skille datostrengen ad med
>explode() ved "-" og derefter samle den igen i den rækkefølge du ønsker det.
>
>Nu ved jeg godt at dette ikke er en PHP gruppe men her får du lige et
>eksempel på hvordan du kan lave en lille PHP funktion som klarer jobbet:
>
># Function for converting YYYY-MM-DD to DD-MM-YYYY
>function datereverse ($datestring) {
> $partdatestring = explode("-", $datestring);
> $result = $partdatestring[2] . "-" . $partdatestring[1] . "-" .
>$partdatestring[0];
> return $result;
>}
Eller (til nemmere at forstå)
list($aar,$maaned,$dato) = explode("-",$datostreng);
print $dag."-".$maaned."-".$aar;
| |
Jesper Brunholm (23-02-2003)
| Kommentar Fra : Jesper Brunholm |
Dato : 23-02-03 23:11 |
|
Morten Dall wrote:
> Hej jeg køre på en MySQL server der ligger hos Azero.dk
> i en af mine tabeller har jeg et dato feldt, men formatet på det er
> Amerikansk altså feks. 2003-02-23
> det syntes jeg jo er lidt dumt da brugerne, både når der skal intastes og
> når det bliver udlæst, nok foretrækker 23-02-2003 kan man ikke ændre det ?
Nej - du kan ikke ændre formatet i databasen, men:
du kan trække det ud du ønsker med date_format(date, format) (1/3 nede
på siden < http://www.mysql.com/doc/en/Date_and_time_functions.html>).
Du kan lægge det ind i databasen igen ved at bede php eller mysql om at
formattere retur.
Med MySQL kunne det være (assuming at du sender en dato i formatet
23022003 til SQL'en. Alle funktioner kan findes på
< http://www.mysql.com/doc/en/String_functions.html>)
INSERT INTO test SET MinDato = CONCAT( SUBSTRING( '01012003', 5, 4 ) ,
SUBSTRING( '01012003', 3, 2 ) , SUBSTRING( '01012003', 1, 2 ) )
mvh
Jesper Brunholm
| |
Jesper Brunholm (24-02-2003)
| Kommentar Fra : Jesper Brunholm |
Dato : 24-02-03 11:50 |
|
Jesper Brunholm wrote:
> Du kan lægge det ind i databasen igen ved at bede php eller mysql om at
> formattere retur.
Hej igen - jeg har lavet lidt test på det, (som muligvis ikke er direkte
relevant for dig da du kører asp, but then again - jf det vi plejer at
høre om asp-performance sammenlignet med php performance skulle asp
gerne komme ud u samme ende af testen som php )
Jeg har kørt 5 iterationer à 1000 inserts på flg to muligheder:
$MyDato='01012003';
/* MySQL får lov til at formattere til SQL-datoformat */
mysql_query("
INSERT INTO test SET MinDato = CONCAT(SUBSTRING('$MyDate', 5, 4),
SUBSTRING('$MyDate', 3, 2 ), SUBSTRING('$MyDate', 1, 2 ))
")or trigger_error(mysql_error());
/* PHP får lov til at formattere til SQL-datoformat */
$MyDate=substr($MyDate,4,4).substr($MyDate,2,2).substr($MyDate,0,2);
mysql_query("
INSERT INTO test SET MinDato = '$MyDate'
")or trigger_error(mysql_error());
Resultatet er markant:
PHP kører igennem med sammenlagt 1.5762342214584 seconds
MySQL kører igennem med sammenlagt Total: time1: 3.586118221283 seconds
- på de 5000 formatteringer + inserts som det bliver til for hver.
Jeg skal ikke kunne sige om timestamp og UNIX_TIMESTAMP kan give dig
andre resultater, men i ovenstående kan man afgjort sige at MySQL ikke
er den hurtigste til at klare string/date-formatteringen. Omvendt er den
ikke så langsom så det er en udelukket metode.
Jeg connecter-disconnecter til MySQL før og efter de 10.000 operationer,
så det skulle ikke have nogen indflydelse.
/Jesper Brunholm
--
Phønix - dansk folk-musik fra unge musikere - < http://www.phonixfolk.dk/>
| |
Jimmy (23-02-2003)
| Kommentar Fra : Jimmy |
Dato : 23-02-03 23:32 |
|
"Morten Dall" <mrdall@knus.dk-slet-alt-efter-dk> wrote in message
news:3e593671$0$52176$edfadb0f@dread16.news.tele.dk...
> Hej jeg køre på en MySQL server der ligger hos Azero.dk
> i en af mine tabeller har jeg et dato feldt, men formatet på det er
> Amerikansk altså feks. 2003-02-23
Det er ikke amerikansk.
Det er en ISO standard, som kan spare dig for en masse ærgelser.
Formatet er entydigt i hele verden, hvilket er det, som gør det så perfekt.
Hvilken dato er følgende: 07/06-2003?
Du er imidlertid ikke i tvivl om denne: 2003-06-07.
> det syntes jeg jo er lidt dumt da brugerne, både når der skal intastes og
> når det bliver udlæst, nok foretrækker 23-02-2003 kan man ikke ændre det ?
1 - Lav en funktion, der konverterer dit format til ISO.
2 - Lav dropdown-menuer, som brugerne kan vælge fra.
Mvh
Jimmy
| |
Jonas Koch Bentzen (24-02-2003)
| Kommentar Fra : Jonas Koch Bentzen |
Dato : 24-02-03 00:16 |
|
Jimmy wrote:
>
> Det er en ISO standard, som kan spare dig for en masse ærgelser.
>
> Formatet er entydigt i hele verden, hvilket er det, som gør det så
> perfekt.
Lidt uddybning: Formatet er så godt, fordi tanken bag det er let at forstå:
Man går fra høj til lav (år, måned, dag, timer, minutter, sekunder).
Der er en god artikel om det på
http://www.cl.cam.ac.uk/~mgk25/iso-time.html.
--
Jonas Koch Bentzen
http://findhim.com/
| |
Jimmy (24-02-2003)
| Kommentar Fra : Jimmy |
Dato : 24-02-03 00:25 |
|
"Jonas Koch Bentzen" <ingen.email@eksempel.dk> wrote in message
news:b3bko3$h8b$1@sunsite.dk...
> Jimmy wrote:
> >
> > Det er en ISO standard, som kan spare dig for en masse ærgelser.
> >
> > Formatet er entydigt i hele verden, hvilket er det, som gør det så
> > perfekt.
>
> Lidt uddybning: Formatet er så godt, fordi tanken bag det er let at
forstå:
> Man går fra høj til lav (år, måned, dag, timer, minutter, sekunder).
Ja. præcis, og hvad mange ikke tænker på er, at computere ikke kan sortere
filnavne med datoer i korrekt med mindre de netop har ovenstående format.
> Der er en god artikel om det på
> http://www.cl.cam.ac.uk/~mgk25/iso-time.html.
Herligt, den vil jeg læse.
mvh
Jimmy
| |
|
|