06. september 2004 - 17:23Der er
15 kommentarer og 1 løsning
ASP dato format til Access
Ja det måtte jo komme: endnu et spørgsmål om Access og datoformater.
Jeg har kigget lidt rundt på Eksperten og ledt efter den rigtige møde at indsætte datoer i Access og fundet adskillige. Dette er i og for sig udemærket, men var der én, der kunne sætte mig ind i den "korrekte"/"normale" syntaks?
eagleeye skriver ofte om Access og datoer:
"Bemærk SQL skal havde Dato i US/UK formatet som er yyyy-mm-dd eller mm-dd-yyyy og ikke som det danske dd-mm-yyyy. Så hvis du køre på DK server skal du formatere dato'en så den er i et af de to viste." - hvilket jeg finder mærkeligt, da jeg ofte benytter at indsætte Now i min Access db (DK-Access + DK/UK server), og kan benytte dato som det er tænkt. Jeg kan sortere på det som ønsket og kigger man i db'en står datoen på dansk format dd-mm-yyyy. Så hvad er den rigtige metode?
Et mere specifikt spørgsmål? Hvis en bruger fx indtaster datoen 24-12-2004 i et form-felt og jeg ønsker at indsætte det i en kolonne i Access, som er dato/tid formateret. Hvordan gøres dette? Skal man benytte formatdatetime() eller kan man blot fx gøre såden: '" & request.form("datofelt") & " 12:00:00" & "' ?
Hej eagleeye. Jo jeg plejer altid at tage dit ord som lov, men i dette tilfælde kan jeg simpelthen ikke forstå hvorfor mit virker som beskrevet, når jeg netop har erfaret at en indsættelse af Now i min Access-db netop indsætter et dansk dato-format (dd-mm-yyyy). Jeg leder egentlig blot efter den rigtige måde at gøre det på.
Og hvis man kan komme uden om at skulle til at gøre sådan fx:
dag = Day(date) mdr = month(date) yr = year(date) dato = ""& dag &"-"& mdr &"-"& yr &""
strSQL = "INSERT INTO news (date) VALUES (" & dato & "')"
Hvis man skal overholde SQL standarten skal det være som yyyy-mm-dd eller mm-dd-yyyy hvis man sætte data ind i et Dato/klokkeslæt type felt. I Access bruger man # omkring datoer.
Det man skal huske på er at der er to dato formater på ens side: 1. Det som vises på ens side kan være: 06-09-2004 eller i dd-mm-yyyy 2. Det format som bruges til via SQL som er yyyy-mm-dd
Det man kan gøre er at lave en funktion datoToSQL(dato):
function datoToSQL(dato) datoToSQL =Year(dato) & "-" Right("0" & month(dato),2) & "-" & Right("0" & day(dato),2) end function
Nu tror jeg at det lige før der er ved at gå noget op for mig :-)
Jeg har indtil nu været vant til at gøre sådan når jeg har indsat en dato for fx hvornår en post er oprettet '" & Now "'. Er det korrekt forstået at jeg her har benyttet Access' måde at vise datoer på? Hvilket også er forklaringen på at når jeg kigger i Access (DK version) så står mine datoer på formen dd-mm-yyyy tt:mm:ss? Og derfor har det heller ikke været nødvendigt at benytte # omkring datoen?
Er det så fordi jeg har en dansk Access at det netop er på denne form?
Hvad skal jeg så gøre nu, hvor jeg har brug for at en indtastning fra et tekstfelt skal gemmes i en Dato/klokkeslæt kolonne? Brugeren indtaster på formen dd-mm-yyyy. Kan jeg så ikke blot gemme denne som #" & Request.Form(datofelt) & "#?
Når du indsætter det med ' omkring indsætter du det som en streng. Så det vil gå godt men du kan ikke bruge ' i en where del, så drefor kan man ligeså godt gøre det med # omkring: SQL = "select * from spm536829 where dato > '01-08-2004'" 'virker ikke
jeg tror ikke helt jeg ahr forstået ideen med at ændre datoformaten til UK, synes ikke at have stødt på nogen fejl, hvor jeg har brugt almindelig dansk 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.