/ 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
MySQL: Dato og tid, formattering
Fra : Ukendt


Dato : 09-05-05 15:50

Hej!

Når man laver en SELECT og vil sikre at tid og dato er formatteret som
ønsket er:
DATE_FORMAT(date, '%d-%m-%Y') AS FormDate
osv. meget komfortabelt.

Jeg søger efter en måde at sikre at man får formatteret det man vil gemme
i
basen korrekt når der er tale om dato og tid.
Jeg har pt. en rutine som formatteret det korrekt til den lokale base jeg
har i mit testmiljø, men udbyderens kører tilsyneladende ikke med DK
formattering som min lokale base.

Så kort og godt: Kender nogen en måde at sikre at basens dato og tid altid
arkiveres korrekt?

Hilsen, Brian




 
 
torben (10-05-2005)
Kommentar
Fra : torben


Dato : 10-05-05 20:58

Brian Vind wrote:
> Hej!
>
> Når man laver en SELECT og vil sikre at tid og dato er formatteret som
> ønsket er:
> DATE_FORMAT(date, '%d-%m-%Y') AS FormDate
> osv. meget komfortabelt.
>
> Jeg søger efter en måde at sikre at man får formatteret det man vil gemme
> i
> basen korrekt når der er tale om dato og tid.
> Jeg har pt. en rutine som formatteret det korrekt til den lokale base jeg
> har i mit testmiljø, men udbyderens kører tilsyneladende ikke med DK
> formattering som min lokale base.
>
> Så kort og godt: Kender nogen en måde at sikre at basens dato og tid altid
> arkiveres korrekt?
>
> Hilsen, Brian
>
>
>

Jeg kender ikke MySQL, men alle de databasesystemer, jeg kender gemmer
datoer som antal millisekunder(sekunder/dage) siden en eller anden
fixdag (En del dato algoritmer har 1 jan 1970 som fixpunkt.). Så selve
gemningen har ikke noget med formatteringen at gøre.

Hvis du først har skrevet dine data ud fra din "testdatbase" i en
tekstfil, og efterfølgende har læst denne tektfil ind i
"produktionsdatabase" kan du have et problem med formatteringen.

Når du skriver dato'er angiver du et format. Og når du læser en dato fra
en tekstfil, skal du også angive, hvilket datoformat databasen skal
bruge til at oversætte tekststrengen til en numerisk værdi.

Hvis man ikke gør det, kan man få problemer. Et typisk eksempel herpå er
Excel, som default forsøger at indlæse tekstfiler med datoformatet
mm-dd-yy, mens man i europa ofte har dannet sin tekstfil i formatet
dd-mm-yy.

Torben
Torben

Ukendt (10-05-2005)
Kommentar
Fra : Ukendt


Dato : 10-05-05 21:47

Hej Torben, og tak for svaret.

>
> Når du skriver dato'er angiver du et format. Og når du læser en dato fra
> en tekstfil, skal du også angive, hvilket datoformat databasen skal
bruge
> til at oversætte tekststrengen til en numerisk værdi.

Jeg er ikke verdensmester ud i databaser, endnu , så kan du komme med
et
eksempel på hvordan man angiver datoformat overfor basen?

Jeg henvender mig til basen fra en hjemmeside, og begge dele er hostet
samme
sted.


Hilsen, Brian




torben (10-05-2005)
Kommentar
Fra : torben


Dato : 10-05-05 23:35

>
> Jeg er ikke verdensmester ud i databaser, endnu , så kan du komme med
> et
> eksempel på hvordan man angiver datoformat overfor basen?

Næppe et eksempel, du kan bruge til noget, da jeg ikke kender MySql. Du
er nødt til at kigge i manualen til MySql.

Men hvis man brugte postgresql kunne man skrive

insert minTable (dato)
values(to_date('01-05-2005','DD-MM-YYYY'));

Torben

Martin (11-05-2005)
Kommentar
Fra : Martin


Dato : 11-05-05 05:56

Brian Vind wrote:
> Hej!

Hejsa

>
> Når man laver en SELECT og vil sikre at tid og dato er formatteret som
> ønsket er:
> DATE_FORMAT(date, '%d-%m-%Y') AS FormDate
> osv. meget komfortabelt.

PAS PÅ med at bruge reserveret ord i feltnavne (her bruger du date) der
vil du næsten med garanti få en sød lille mysql fejl hvis ikk jeg gætter
helt forkert :)

>
> Jeg søger efter en måde at sikre at man får formatteret det man vil gemme
> i
> basen korrekt når der er tale om dato og tid.

yyyy-mm-dd er ALTID den korrekte metode at indsætte en dato.


> Jeg har pt. en rutine som formatteret det korrekt til den lokale base jeg
> har i mit testmiljø, men udbyderens kører tilsyneladende ikke med DK
> formattering som min lokale base.

Hvis du bruger fx phpmyadmin eller andre mysql managere så kan du
sikkert se dato felter stående som dd-mm-yyyy når det er indtastet, men
sådan bliver det ikke "gemt" korrekt :)

Det er jo oplagt at bruge mysqls dato felter - dette kunne være:
timestamp
datetime
date
year
osv osv.

Timestamp sætter antal sekunder fra unixtime (1.jan 1970)
datetime indsætter det i formattet yyyy-mm-dd hh:mm:ss
date indsætter i formatet yyyy-mm-dd
year yyyy

>
> Så kort og godt: Kender nogen en måde at sikre at basens dato og tid altid
> arkiveres korrekt?

Hvis du skal indsætte datoen for ligenu - så gør man således:
INSERT INTO tabel (datofelt) VALUES (NOW())

Skal du indsætte 12 februar 2003 gøres det således
INSERT INTO tabel (datofelt) VALUES (20030212)

Ellers så kan du læse MEGET mere om alle typer af dato varianter i manualen:
<http://dev.mysql.com/doc/mysql/en/datetime.html> <-- Her er om de
forskellige felt typer
<http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html> <-- og
her er så alle dato funktionerne :)

--
Martin
<www.lsv-online.dk> Comes when it comes

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

Månedens bedste
Årets bedste
Sidste års bedste