Avatar billede nil.dk Nybegynder
26. marts 2003 - 01:54 Der er 11 kommentarer og
1 løsning

Mystisk datoproblem

Jeg har et mystisk datoproblem - jeg skal forsøge at beskrive omstændighederne så godt jeg kan.

Jeg koder ASP op imod en MySQL-database.

I en tabel har jeg to felter af datatypen "date". Disse to felter hedder "begindate" og "enddate". Kigger jeg på en post i tabellen er indholdet af disse date-felter angivet således:

2003-03-26

Hvis jeg så henter dette over i et formfelt til redigering ser det således ud:

26-03-2003

Gemmer jeg dette ender datoen i basen sådan:

2026-03-20

Og på siden:

20-03-2026

Altså er der et problem med datoformaterne imellem databasen og webserveren.

Hjælp modtages med kyshånd og 200 point - det er vigtigt og haster.
Avatar billede nil.dk Nybegynder
26. marts 2003 - 02:08 #1
Når jeg stiller det sådan op kan jeg godt selv se hvad det er der er galt. Den vender formatet om og når jeg gemmer prøver MySQL at tilpasse det vrøvl den får ind.

Det jeg skal bruge er altså en funktion der vender datoen fra 26-03-2003 til 2003-03-26

Findes denne funktion i SQL.. eller skal jeg lave noget workaround i ASP?
Avatar billede limemedia Nybegynder
26. marts 2003 - 04:38 #2
Det er et hack ! Efter et kig i manualen synes dette at være de muligheder vi har - det er lidt klodset, men ...

Hente dansk datoformat FRA databasen
SELECT DATE_FORMAT(datofelt,'%d-%m-%Y') AS datofelt_f

Gemme dansk datoformat I databasen
INSERT CONCAT_WS('-', SUBSTRING('2003-03-26', 0, 4), SUBSTRING('2003-03-26', 5, 2), SUBSTRING('2003-03-26', 8, 2))


/ LJ
Avatar billede limemedia Nybegynder
26. marts 2003 - 04:41 #3
sorry, selvfølgelig
INSERT CONCAT_WS('-', SUBSTRING('26-03-2003', 0, 2), SUBSTRING('26-03-2003', 3, 2), SUBSTRING('26-03-2003', 6, 4))
Avatar billede nil.dk Nybegynder
26. marts 2003 - 12:44 #4
ljweb >> Jeg var tæt på at købe den.. så rigtigt ud.... men da jeg prøvede endte jeg med 0000-00-00 i databasen :o(
Avatar billede nil.dk Nybegynder
26. marts 2003 - 12:45 #5
min kode:

Conn.Execute("UPDATE cf_banners SET text = '" & text & "', link = '" & link & "', begindate = CONCAT_WS('-', SUBSTRING('" & begindate & "', 0, 2), SUBSTRING('" & begindate & "', 3, 2), SUBSTRING('" & begindate & "', 6, 4)), enddate = CONCAT_WS('-', SUBSTRING('" & enddate & "', 0, 2), SUBSTRING('" & enddate & "', 3, 2), SUBSTRING('" & enddate & "', 6, 4)), weight = " & weight & " WHERE id = " & id)
Avatar billede limemedia Nybegynder
26. marts 2003 - 12:49 #6
ups, substrings starter med 1 og ikke 0 :)
SELECT CONCAT_WS('-', SUBSTRING('2003-03-26', 1, 4), SUBSTRING('2003-03-26', 5, 2), SUBSTRING('2003-03-26', 8, 2))
Avatar billede nil.dk Nybegynder
26. marts 2003 - 12:52 #7
og så omvendt ikke? 26-03-2003 i stedet for 2003-03-26 ?
Avatar billede limemedia Nybegynder
26. marts 2003 - 12:57 #8
lj tager sig til hovedet og udbryder med et *DOOH*

INSERT CONCAT_WS('-', SUBSTRING('26-03-2003', 1, 2), SUBSTRING('26-03-2003', 4, 2), SUBSTRING('26-03-2003', 7, 4))
Avatar billede nil.dk Nybegynder
26. marts 2003 - 13:27 #9
Hvis vi så bytter lidt om så vi har 7,4 - 4,2 - 1,2 i stedet for så spiller den. Tusind tak for hjælpen :o)
Avatar billede limemedia Nybegynder
26. marts 2003 - 13:28 #10
og prøver nok engang - det skal nok virke når jeg får taget mig sammen...

INSERT CONCAT_WS('-', SUBSTRING('26-03-2003', 7, 4), SUBSTRING('26-03-2003', 4, 2), SUBSTRING('26-03-2003', 1, 2))
Avatar billede limemedia Nybegynder
26. marts 2003 - 13:29 #11
rafle rafle, lj kaster en flok tal op i manegen og ser hvordan de lander... på et tidspunkt skal ét eller andet nok virke
Avatar billede nil.dk Nybegynder
26. marts 2003 - 13:29 #12
Too slow *gg*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester