Peter Nielsen skrev:
> Sidder her med en Access database.. jeg har sat mit felt til
> et Dato og klokkeslet type... og hvis jeg så sætter formatet
> til Standard format så viser den at det skal være DD-MM-YYYY
> HH:MM:SS
Det format du vælger i Access er et visningsformat - det bestemmer
hvordan Access skal vise indholdet af feltet. Det bestemmer *ikke*
hvordan datoer i sql-sætninger skal opfattes.
> Og så har jeg den her SQL:
>
> INSERT INTO artist_kalender (datetime) VALUES (#31-08-2006
> 03:03:17#)
Som Michael har nævnt er datetime formentlig et reserveret ord. Det
er bedst at undgå at bruge den slags som navne til tabeller/felter
o.l. - men hvis du vil holde fast i navnet, kan du prøve at
indklamme det: [datetime]
Det er muligt at forespørgslen så vil køre korrekt, men generelt
vil jeg ikke anbefale at man bruger datoangivelser der kan
misforstås (dvs. dd-mm-yyyy/yy-mm-dddd) i forespørgsler.
Der er flere måder at lave sikre datoer i sql på. I Access kan man
benytte funktionerne dateserial og timeserial - se mere her:
<
http://asp-faq.dk/article/?id=98>.
En anden mulighed er at bruge datoformatet yyyy-mm-dd (fx 2006-08-
31) - her er der ingen forvekslingsmuligheder (yyyy-dd-mm anvendes
ikke i praksis).
Endelig er det en god ide at anvende databasens egne datofunktioner
i stedet for asp's ækvivalenter når det er muligt. Hvis man fx skal
gemme dags dato i et felt, er der grundlæggende to måder:
asp:
Dim dato, strSQL
dato = Now()
strSQL = "INSERT INTO tabel (datofelt) VALUES (#" & dato & "#)"
conn.execute (strSQL)
Access/asp:
Dim strSQL
strSQL = "INSERT INTO tabel (datofelt) VALUES (Now())
conn.execute (strSQL)
I den første udgave overføres datoen som en tekst. Præcis hvordan
teksten ser ud afhænger af opsætningen på serveren og den aktuelle
asp-side. Hvordan tekstrepræsentationen af datoen konverteres
tilbage til en dato afhænger af opsætningen på serveren. Der
konverteres altså først fra en dato til en tekst og dernæst fra en
tekst til en dato - og i denne konvertering kan der opstå fejl.
I den anden udgave er det databasen selv der beregner datoen - og
uanset hvordan serveren er sat op, skal det nok være dags dato der
bliver sat ind.
En variant af den sidste model er i øvrigt at benytte muligheden
for en standardværdi i et felt - så kan man helt undlade at tænke
på datofeltet når man opretter nye poster (bare man har sat til det
Now() i databasen).
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen