18. januar 2006 - 13:58
Der er
11 kommentarer og 1 løsning
Problemer med at dato bytter rundt
Hej eksperter ... Jeg vil opdatere databasen så den nye dato bliver den 4. februar 2006 (04-02-2006). Men det der sker, er, at der bliver skrevet den 2. april 2006 (02-04-2006). Hvilket vil sige den "modsatte" dato. Skriver jeg 02-04-2006 bliver datoen rigtig. Fra en form får jeg strengen '04-02-2006' Den putter jeg i variablen strDato. Min kode ser således ud: strDato = Request.Form("Dato") strDato = FormatDateTime(strDato) strDato = year(strDato)& "-" &month(strDato)& "-" &day(strDato) sql = "UPDATE Kalender SET " sql = sql & "Dato='" & strDato & "', " sql = sql & "Overskrift='" & strOverskrift & "', " sql = sql & "Tekst='" & strTekst & "'" sql = sql & "WHERE Id = '" & strId & "'" set rs = objConn.execute(sql) Jeg er ved at blive skør af det!! :-) Er der nogen der kan hjælpe?? (MySQL databasen er i amerikansk format (YYYY-MM-DD)...)
Annonceindlæg fra Infor
18. januar 2006 - 15:16
#1
Når du skal gemme noget i basen så gør i formatet yyyy-mm-dd og når du skal vise det på skærmen så gør det i formatet dd-mm-yyyy. Du skal lave to funktioner en til hvert format. Function DatoIBase(datDato) Dim Dag, Maaned, Aar Dag = datepart("d",datDato) Maaned = datepart("m",datDato) Aar = datepart("yyyy",datDato) DatoIBase = Aar & "" & Maaned & "" & Dag end function Gem funktionerne i en særskilt fil og lav et include på hver side der har brug for det.
18. januar 2006 - 15:17
#2
Det Usa format er langt det bedste til datoer særlig npr du vil have det i dato orden eller intervaller i det den laveste 01-01 og den højeste 12-31 Når jeg bruger dette og henter datoen, altså der hvor jeg skal bruge den splitter jeg stringen ad vender dage-mdr om og skriver så datoen på den deanske måde. Er ikke skrap til php . så der er måske en anden der kan hjælpe med det men skulle være nemt nok LN
18. januar 2006 - 15:25
#3
Ud fra syntaksen i spørgsmålet tolkede jeg som et ASP problem, hvis det er PHP kan du sikkert ikke bruge den løsning jeg har skitseret.
20. januar 2006 - 09:01
#4
>>ffsoft: Det er ganske rigtigt ASP op mod en mySQL... Min kode ser nu sådan ud: strDato = Request.Form("Dato") 'Værdien af strengen er 04-02-2006 strDato = FormatDateTime(strDato) Function DatoIBase(strDato) Dim Dag, Maaned, Aar Dag = datepart("d",strDato) Maaned = datepart("m",strDato) Aar = datepart("yyyy",strDato) DatoIBase = Aar & "" & Maaned & "" & Dag end function sql = "UPDATE Kalender SET " sql = sql & "Dato='" & DatoIBase(strDato) & "', " sql = sql & "Overskrift='" & strOverskrift & "', " sql = sql & "Tekst='" & strTekst & "'" sql = sql & "WHERE Id = '" & strId & "'" set rs = objConn.execute(sql) I databasen giver det værdien 0000-00-00 - øv...
20. januar 2006 - 10:35
#5
DatoIBase = Aar & "" & Maaned & "" & Dag Rettes til: DatoIBase = Aar & "-" & Maaned & "-" & Dag Det var mig der lavede fejlen.
20. januar 2006 - 10:43
#6
Hej hvorfor bruge "-" syntes selv det er nemmere ude "-" kommer et tal ned der kan bruges til både sortering m.v. meget smartere end dato format så jeg syntes dit første eksempel er bedre Og PS. det virker her hos mig altså nævnte eksempel giver 200642 LN
20. januar 2006 - 11:06
#7
>>ffsoft Har prøvet at sætte "-" ind, hvilket giver datoen 02-04-2006 - dvs. stadig den "omvendte dato"... Jeg tilgår mySQL via phpMySQLAdmin, og feltet i databasen er af typen DATE - skal det evt. rettes til DATETIME ?
20. januar 2006 - 12:42
#8
Sæt response.write sætninger ind så du kan se hvad der sker: strDato = Request.Form("Dato") 'Værdien af strengen er 04-02-2006 response.write "1. " & strDato strDato = FormatDateTime(strDato) response.write "2. " & strDato Function DatoIBase(strDato) Dim Dag, Maaned, Aar Dag = datepart("d",strDato) Maaned = datepart("m",strDato) Aar = datepart("yyyy",strDato) DatoIBase = Aar & "-" & Maaned & "-" & Dag end function response.write "3. " & DatoIBase(02-04-2006)
21. januar 2006 - 12:11
#9
strDato = Request.Form("Dato") 'returnerer værdien 04-02-2006 strDato = FormatDateTime(strDato) 'returnerer værdien 4/2/2006 Function DatoIBase(strDato) Dim Dag, Maaned, Aar Dag = datepart("d",strDato) Maaned = datepart("m",strDato) Aar = datepart("yyyy",strDato) DatoIBase = Aar & "-" & Maaned & "-" & Dag end function strDato = DatoIBase(strDato) 'returnerer værdien 2006-4-2 sql = "UPDATE Kalender SET " sql = sql & "Dato='" & strDato & "', " sql = sql & "Overskrift='" & strOverskrift & "', " sql = sql & "Tekst='" & strTekst & "'" sql = sql & "WHERE Id = '" & strId & "'" set rs = objConn.execute(sql) Det ser altså ud som om databasen får de korrekte værdier... Alligevel bliver datoen skrevet som 04-02-2006...
23. januar 2006 - 12:44
#10
Slåfejl... Datoen bliver skrevet som 02-04-2006 selvom DB modtager den som 2006-4-2
23. januar 2006 - 13:26
#11
Det er derfor jeg ikke bruger date felter i databasen Brug et tal felt Int eller lign Lad være med at have de bindestreger på men smid tallet ned i tabellen så virker det. LN
24. marts 2006 - 08:59
#12
Jeg har skiftet mySQL ud med MSSQL, som ikke har denne irriterende bug...
Computerworld tilbyder specialiserede kurser i database-management