Avatar billede suppenudel Nybegynder
11. juli 2006 - 12:11 Der er 19 kommentarer og
1 løsning

Tjekke om dato er udløbet

Hej.

Hvordan er det bedst at tjekke om dato er udløbet.

Hvis jeg har en Tabel med Bruger, Email, Udlobsdato
Så vil jeg gerne udvælge dem, hvor udlobsdato ikke er overskredet dags dato.

Kan det gøres direkte i forespørgslen eller skal det gøres kodemæssigt?

Med venlig hilsen.
Avatar billede dj_uncas Nybegynder
11. juli 2006 - 12:51 #1
Det skal du gøre i SQL - det giver bedst performance allerede at skille nogle af rækkerne fra før du skal føre dem over til .NET

Eks. til SQL Server
SELECT * FROM Brugere WHERE Udlobsdato > getDate()

Eks. til MySQL
SELECT * FROM Brugere WHERE udlobsdato > Now()
Avatar billede suppenudel Nybegynder
11. juli 2006 - 12:58 #2
Okay, smart.

Har access også en indbygget funktion, eller skal jeg her lave den noget i stil med:

SELECT * FROM Brugere WHERE udlobsdato > #" & DateTime.Now() & "#

?
Avatar billede dj_uncas Nybegynder
11. juli 2006 - 13:28 #3
Jeg ved det faktisk ikke helt, men en hurtig google søgning viser at der vist er en Date() funktion i Access...
Avatar billede suppenudel Nybegynder
11. juli 2006 - 13:33 #4
Men er det her så ikke bedst at bruge .NETs hvis den skal forholde sig til eks. current culture?
Avatar billede dj_uncas Nybegynder
11. juli 2006 - 13:56 #5
Jo, hvis der er forskellige tidszoner indblandet. Ellers er det generelt federe at bruge den givne databases egne dato/tid funktioner, da de så passer til db'ens interne datatyper.
Avatar billede thrytter Nybegynder
11. juli 2006 - 13:58 #6
MySQL eksemplet skulle også virke i Access
SELECT * FROM Brugere WHERE udlobsdato > Now()
Avatar billede suppenudel Nybegynder
11. juli 2006 - 14:07 #7
Cool, den virker også i Access. Smid svar :-)
Avatar billede thrytter Nybegynder
11. juli 2006 - 14:26 #8
svar

Max 15 point til mig - resten til dj_uncas
Avatar billede thrytter Nybegynder
11. juli 2006 - 14:26 #9
Skulle have været et svar
Avatar billede dj_uncas Nybegynder
11. juli 2006 - 14:36 #10
Og her er mit svar...
Avatar billede suppenudel Nybegynder
11. juli 2006 - 16:23 #11
Hov, der gik noget galt da jeg skulle angive pointfordelingen! Opretter lige et nyt sp. til Uncas..
Avatar billede arne_v Ekspert
12. juli 2006 - 01:45 #12
udover de nævnte muligheder er der også muligheden af at bruge parameters !
Avatar billede dj_uncas Nybegynder
12. juli 2006 - 18:18 #13
Men lige i dette tilfælde er det vel fedest bare at bruge db'ens indbyggede funktioner. Ansvarsfordelingsmæssigt er det vel db'en der skal tage sig af at finde dags dato, på serveren og gemme den, i stedet for at få en dato fra et helt andet scope...
Avatar billede arne_v Ekspert
12. juli 2006 - 18:45 #14
jeg tror ihvertfald ikke paa at det giver bedre performance at hente tiden i DB fremfor
i app

jeg kan dog godt foelge dit argument om at det hoerer mest hjemme i DB'en

hvis der er en jammerlig UTC support i systemet, saa kunne der vaere semantisk forskel
og i saa fald virker det mest logiske at betragte DB'en som vaerende altid
rigtig

jeg kan generelt ikke lide SQL med database specifikke funktioner i, men
parameters er jo heller ikke vildt portable mellem databaser p.g.a. @?:
roderiet
Avatar billede suppenudel Nybegynder
14. juli 2006 - 00:37 #15
Hej Arne, kan du give et eksempel på hvordan parameters kan udnyttes til formålet?
Mvh.

Ps. Hvis man nu vil have de poster frem hvor vi er eks. 5 dage fra udløb - Skal vi så ud i noget kode, eller findes der også funktioner til dette?
Avatar billede arne_v Ekspert
14. juli 2006 - 01:17 #16
Dim sel As OleDbCommand = New OleDbCommand("SELECT * FROM brugere WHERE udlobsdato > ?", con)
sel.Parameters.Add("@udlobsdato", OleDbType.Date)
sel.Parameters("@udlobsdato").Value = DateTime.Now
Avatar billede arne_v Ekspert
14. juli 2006 - 01:18 #17
du kan lægge 5 dage til både i applikation og i databasen
Avatar billede arne_v Ekspert
14. juli 2006 - 01:18 #18
app:

sel.Parameters("@udlobsdato").Value = DateTime.Now.AddDays(5)
Avatar billede arne_v Ekspert
14. juli 2006 - 01:21 #19
database:

Access specifikt:

... WHERE udlobsdato > DateAdd("d", f, Now())
Avatar billede arne_v Ekspert
14. juli 2006 - 01:21 #20
... WHERE udlobsdato > DateAdd("d", 5, Now())
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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