Avatar billede no_doubt Nybegynder
18. marts 2008 - 17:10 Der er 26 kommentarer og
1 løsning

dato problem

hvad dælen er der i vejen med

sql = "SELECT TOP 4 * FROM events where datoen >= date() order by datoen desc"

datoen = tekst i form af 05-04-2008
Avatar billede erikjacobsen Ekspert
18. marts 2008 - 17:25 #1
Datofelter skal være af en datotype, eller alternativt på forment '2008-12-31', men så kan indbyggede datofunktioner muligvis ikke anvendes.
Avatar billede keysersoze Ekspert
18. marts 2008 - 17:32 #2
du kan muligvis bruge cdate - men generelt er det en uhyre dårlig idé at gemme datoer i et tekstfelt, det er netop derfor der er forskellige felttyper i databaser.
Avatar billede no_doubt Nybegynder
18. marts 2008 - 17:42 #3
det ved jeg, men da jeg brugte datofelttypen blev 04-05-2008, i et tekst felt til 05-04-2008
Avatar billede keysersoze Ekspert
19. marts 2008 - 07:55 #4
Der er flere ting der kan spille ind - dels hvordan databasen internt gemmer datoen (mm-dd-yyyy) og dels hvilken locale id (lcid) din side kører med.
Avatar billede no_doubt Nybegynder
19. marts 2008 - 11:35 #5
Jeg havde (da jeg brugte datoformat) session.lcid = 1030 i toppen af alle dokumenter
Avatar billede keysersoze Ekspert
19. marts 2008 - 11:56 #6
Så er det vel - jf henvisningen til hvordan access arbejder med datoer - fordi du indsætter datoen med et forkert formaet i basen. Det er ikke ligegyldigt om du indsætter mm-dd-yyyy, dd-mm-yyyy eller noget helt tredie.
Avatar billede no_doubt Nybegynder
19. marts 2008 - 12:11 #7
Synes nu det er som det skal være...

sql = "Insert into events (tekst, datoen) values('" & request.form("tekst") & "', '" & request.form("dato") & "')"

feltet: <input type="text" name="dato" size="11" value="dd-mm-aaaa">
Avatar billede keysersoze Ekspert
19. marts 2008 - 17:54 #8
hvis du skal indsætte datoer skal det også gøres rigtigt - dvs med #dato#
Avatar billede erikjacobsen Ekspert
19. marts 2008 - 18:53 #9
Ja, men kun med #...# hvis det er Access. Man kan nu altid putte en dato ind på formen 2008-03-19, og når man tager den ud igen så med indbyggede funktioner altid få korrekt styr på dato og måned.
Avatar billede no_doubt Nybegynder
19. marts 2008 - 19:23 #10
keyser, hvordan vil du mene den så skal se ud??
Avatar billede no_doubt Nybegynder
20. marts 2008 - 13:11 #11
Ja eller erik :-)?
Avatar billede erikjacobsen Ekspert
20. marts 2008 - 21:49 #12
Meget simpelt:

1) Datoer puttes i feltet med ISO-format:  #2008-03-20#
2) Datoer hentes ud fra et felt med de tilhørende funktioner:

  d = oRs.Fields("datotid").value
  'response.write TypeName(d) & " "
  response.write Day(d) & "/" & Month(d)  & "-" & Year(d) & " " & Hour(d) & ":" & Minute(d) & ":" & Second(d)

Den udkommenterede linie kan kontrollere at det faktisk er en "Date", der hentes. Der skal i udskriften sikkert tages hensyn til foranstillede 0-er når tallet er under 10.

På denne måde er man dejligt uafhængig af hvilke kulturelle indstillinger serveren har, så specielt de skøre englændere og amerikaneres mani med at skrive måneden først, ikke giver problemer.

Det er et gammelt problem, som skyldes at Microsoft har givet en dato et format i databasesammenhæng, hvor databasen alene skulle opbevare værdien, og GUI-en skulle tage sig af formatet. Men det er verden heldigvis vokset fra (altså den del, der ikke bruger MS-produkter).
Avatar billede no_doubt Nybegynder
22. marts 2008 - 12:52 #13
Hmm hvordan skal min insert se ud....
Avatar billede keysersoze Ekspert
22. marts 2008 - 22:41 #14
insert into tabel (kolonne) values (#2008-03-20#)
Avatar billede no_doubt Nybegynder
23. marts 2008 - 00:30 #15
mere præcist....med request.form..
Avatar billede keysersoze Ekspert
23. marts 2008 - 10:07 #16
insert into tabel (kolonne) values (#" & Request.Form("year") & "-" & Request.Form("month") & "-" & Request.Form("day") & "#)
Avatar billede no_doubt Nybegynder
23. marts 2008 - 10:49 #17
mener du ikke

insert into tabel (kolonne) values (#" & Request.Form("day") & "-" & Request.Form("month") & "-" & Request.Form("year") & "#)

??
Avatar billede erikjacobsen Ekspert
23. marts 2008 - 10:53 #18
Du må gøre lige hvad du vil, no_doubt, men læg mærke til i 20/03-2008 21:49:48 at jeg anbefaler at tage året først som i ISO-standarden, fordi det ikke levner mulighed for fortolkning af hvad der er dag og måned.
Avatar billede no_doubt Nybegynder
23. marts 2008 - 10:58 #19
hmm er helt sat af :-/
Avatar billede keysersoze Ekspert
23. marts 2008 - 11:02 #20
nej - det mener jeg ikke.
Avatar billede no_doubt Nybegynder
23. marts 2008 - 11:19 #21
men øhhhhh...vil det ikke give 2008-03-23 ??
Avatar billede keysersoze Ekspert
23. marts 2008 - 11:26 #22
databasen holder styr på dine data - du bestemmer hvordan de skal vises.
Avatar billede erikjacobsen Ekspert
23. marts 2008 - 11:27 #23
2008-03-23 er jo også en fin dato - det er ikke et dumt tekstfelt. Den ved udmærket hvad der er år, måned og dag, og det vil du se når du tager punkt 2 deroppe.
Avatar billede no_doubt Nybegynder
23. marts 2008 - 12:30 #24
svar gutter ???
Avatar billede erikjacobsen Ekspert
23. marts 2008 - 12:40 #25
Ingen point til mig, tak.
Avatar billede no_doubt Nybegynder
23. marts 2008 - 12:46 #26
keyser ?
Avatar billede keysersoze Ekspert
23. marts 2008 - 21:08 #27
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester