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

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste