12. december 2002 - 08:35Der er
8 kommentarer og 1 løsning
Indsæt dato i Access-db
Jeg er en smule i tvivl om indsættelse af datoer. Jeg har hidtil brugt et tekstfelt i stedet for et datofelt netop for at undgå disse problemer. 1) Når jeg indsætter værdien Now() Eller Date() er det ligegyldigt, om det er dansk eller engelsk format. Det bliver placeret korrekt i tabellen, hvis format jeg har angivet til "dd-mm-yyyy hh:nn:ss". Er det korrekt? 2) Hvis jeg indsætter en streng "03-04-2002 21:42:23" (3. april), kan jeg vel få problemer. Hvordan tolker SQL det m.h.t. dag og måned? Skal det skrives på amerikansk format, for at blive indsat korrekt?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
1.: Hvis du vil indsætte now eller date i databasen via SQL så brug de indbyggede.
Hvis man dansk dato format i ASP koden og skriver: "INSERT INTO xx (dato) VALUES (#" & date & "#)" Så vil den tolke datoen forkert. For at bruge den interne dato function: "INSERT INTO xx (dato) VALUES (date())"
2.: SQL tolker dato US/UK format de vil sigde:
yyyy-mm-dd eller mm-dd-yyyy
Så hvis du skriver 03-04-2002 vil den tolke 03 som månede og 04 som dagen. Hvis man indsætter dato-tid skal det være i dette formart yyyy-mm-dd hh:nn:ss
Dvs. hvis jeg konsekvent indsætter i formatet yyyy-mm-dd hh:nn:ss vil der ikke opstår problemer? Så skal jeg bare have en lille funktion til at konvertere formatet lige før indsættelsen!? Hvad skal jeg så angive formatet til i databasen - ovenstående eller alm. amerikansk?
Function ConvertDate(Dato) ConvertDate = Year(Dato) & "-" & Month(Dato) & "-" & Day(Dato) & " " & Time(Dato) End Function
Hvis du indsætter i US/UK format via SQL giver det ikke problemmer.
Ja du skal lave en converter function, men jeg er ikke sikker på Time(dato) virker med ellers gør formatdatetime functionen:
Function ConvertDate(Dato) ConvertDate = Year(Dato) & "-" & Month(Dato) & "-" & Day(Dato) & " " & formatdatetime(Dato,vblongtime) End Function
Det er lige meget hvilken format du køre i databasen det må gerne være dansk. Det er SQL standarten som siger dato via SQL skal være i formatet yyyy-mm-dd eller mm-dd-yyyy
Ja det kan man men så skal du når du hendter fra databasen for at udskrive lave det til DK format. Det kan som du skriver gøres med: Format(Dato, 'dd-mm-yyyy hh:nn:ss')...
Problemmet med DK dato format er at man skal konverter enten når man gemmer i databasen eller når man udskriver...
Du kan også prøv at skrive denne linie lige før du udskriver så kan man måske undvære format i SQL linien:
Session.LCID = 1030
--- SQL = "SELECT dato FROM tabel" .. .. Session.LCID = 1030 'Set dansk dato format Response.write rs("dato")
Jeg har lavet følgende funktion til konvertering af datoer. Den synes jeg selv er ret smart:
Function ConvertDate(Format)
Format = Replace(Format, "dd", Day(Date)) Format = Replace(Format, "mm", Month(Date)) Format = Replace(Format, "yyyy", Year(Date)) Format = Replace(Format, "hh", Hour(Time)) Format = Replace(Format, "nn", Minute(Time)) Format = Replace(Format, "ss", Second(Time)) ConvertDate = Format
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.