Når man så indsætter en dato i dansk dato format som er dd-mm-yyyy, vil Access bytte rundt på dag og måned i datoen.
Der er en løsning og det er at bruge dato funktionerne Year, Month og Day til at formatere din dato.
Kode eksemple for Access, husk Access bruger # omkring datoen:
dato = "04-06-2003"
strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
SQL = "INSERT INTO tablenavn (dato) VALUES (#" & strDato & "#)"
%>
Det samme gæler når man henter poster ud fra Access det er bare en SELECT SQL man bruger:
dato = "04-06-2003"
strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
SQL = "SELECT * FROM tabelnavn WHERE dato = #" & strDato & "#"
%>
Jeg kan anbefale at lave en funktion som kan lave dato eller dato/klokkeslæt om til formatet yyyy-mm-dd hh:nn:ss som bruges i SQL.
<%
function datoToSQL (s)
datoToSQL = Year(s) & "-" & Right("0" & Month(s),2) & "-" & Right("0" & Day(s),2)
if inStr(1, s, ":") > 0 then
datoToSQL = datoToSQL & " " & Right("0" & Hour(s),2) & ":" & Right("0" & minute(s),2)
datoToSQL = datoToSQL & ":" & Right("0" & Second(s),2)
end if
end function
%>
Samme kode eksempel fra før, nu med brug af funktionen:
dato = "04-06-2003"
SQL = "SELECT * FROM tabelnavn WHERE dato = #" & datoToSQL(dato) & "#"
%>
Når man arbejder med datoer på ens side skal man vide der er 3 dato formater:
1. Dato formatet på ens hjemmeside. Det er det dato format som vises til brugerne, og typisk vil det være dansk format dd-mm-yyyy, men det også være et helt andet format hvis man har specielle ønsker.
2. Dato formatet man bruger via SQL. Dette dato format er yyyy-mm-dd som beskrevet i artiklen.
3. Dato formatet man gemmer datoen i databasen. Det betyder ikke så meget hvilket format man vælger men igen ville man typisk bruge dansk format.
Vil man være bare lidt seriøs ASP programmør, også selvom det kun er "hobby programmør" skal man ikke springe over hvor gæret er lavest og gemmer datoer i enten en tal eller tekst kolonne. Selv hvis man bruger en tal/tekst kolonne skal man alligevel formatere datoen til kolonnen, så hvorfor ikke formatere dato så den kan lægges i en dato kolonne?
Dato/klokkeslæt typen giver også nogle fordele:
1. Der er et stort udvalg af dato funktion som kan benyttes direkte i SQL sætningen, det kan man ikke men en tekst eller tal kolonne uden man skal havde tungen meget lige i munden for at konvertere tallet/teksten til en dato.
2. Når man udskriver fra reecordsetet formateres datoen automatisk til det dato format du har valgt på din hjemmeside med Session.LCID. Det betyder du ikke skal til endnu engang at formatere dato som man skulle hvis det var en tal kolonne.
Som afrunding, lad mig slå en ting fast: Gem altid datoer i en kolonne af typen Dato/Klokkeslæt eller på engelsk Date/Time.

