Avatar billede bjarkekr Nybegynder
29. november 2002 - 17:55 Der er 17 kommentarer og
1 løsning

SQL forespørgsel.

Jeg skal lave en forespørgsel i sql hvor den skal finde det tidspunkt der kommer først fra det klokken er nu. Klokken nu, kan jeg godt finde ud af. Det er bare sql strengen jeg skal ha' styr på.

I databasen har jeg et felt der hedder starttid, det er standard dato format (29-11-200- 17:55:00).

indtil videre ser den sådan ud:
SQL= "SELECT koncert.* FROM koncert WHERE koncert.scene LIKE '%"+scene+"%' AND koncert.starttid LIKE '%"+tid+"%' AND koncert.band LIKE '%"+band+"%' ORDER BY starttid;";
Avatar billede sjap Praktikant
29. november 2002 - 19:24 #1
Hvad med at tilføje en ekstra lille AND blandt alle de andre:

AND starttid>=Now()
Avatar billede sjap Praktikant
29. november 2002 - 19:27 #2
Så vil hele SQL sætningen f.eks. se således ud:

SQL= "SELECT koncert.* FROM koncert WHERE koncert.scene LIKE '%"+scene+"%' AND koncert.starttid LIKE '%"+tid+"%' AND koncert.band LIKE '%"+band+"%' AND starttid>=Now() ORDER BY starttid;";

Jeg har ikke lige testet det, men kan ikke lige se nogen grund til at det ikke skulle virke :-)
Avatar billede mugs Novice
29. november 2002 - 20:35 #3
superjab -> Hvis vi nu læser ordene i spørgsmålet og "skal finde det tidspunkt" der er >Now, så skal vi jo ikke have >=Now, og desuden en begrænsning på, da spørgeren kun vil have den tidligste post der er >Now. Kan man lave det ved en Top1? 

SELECT TOP 1 og bla bla :o)
Avatar billede sjap Praktikant
29. november 2002 - 21:05 #4
Hej Mugs

Skal du ikke på kursus - eller det har du måske været? Jeg synes jeg så det et eller andet sted.

Om det nu lige er > eller >= skal ikke skille os. Jeg kan godt se hvad du mener og er ikke utilbøjelig til at være enig :-)

Vedrørende antallet af poster er der lidt inkonsistens i spørgsmålet. Det kan læses som om der kun søges en enkelt post, men så er der jo ikke nogen grund til at sortere efter "starttid". Så der vel blot behov for en tilbagemelding fra bjarkekr.

/JAP
Avatar billede mugs Novice
29. november 2002 - 21:09 #5
Hej compadre -> Jo, jeg skal på kursus og blive klog. Desværre er det ovre på djævleøen, så jeg trækker det længst muligt.

Hvad ang. spørgsmålet skal du ikke tage min kommentar for andet end en bemærkning på sidelinien. Men kan man ikke kombinere dit svar med en Top1?
Avatar billede bjarkekr Nybegynder
29. november 2002 - 22:02 #6
Jeg prøver lige at forklare mig bedre.

På siden er der en form hvor man kan vælge dag (har value 22-7-2002 ell. lign.), scene og band navn. Alt efter hvad man vælger skal der laves en søgning i db'en for at finde poster der passer til det valgte.

I databasen har feltet starttid egenskaben general date (DD-MM-YYYY TT:MM:SS).

Når brugeren så f.eks. vælger 22-7-2002 skal alle de poster der har starttid 22-7-2002 vises på siden.

Nu er problemet så at jeg kan ikke skrive starttid='"+dag+"', da der også står en tid i databasefeltet. Altså bliver intet vist til brugeren. Derfor prøvede jeg at bruge LIKE, det virker i IIS men ikke i PWS. Skal det være rigtigt må man også kun bruge LIKE på strenge.

Hvad gør jeg så??? kan man lave en søgning på dato hvor den kun søger på en bestemt dag og ikke en bestemt tid?? Således at jeg får skrevet alle koncerter på en bestemt dag ud på siden.

Jeg skriver ASP i JavaScript (Jscript).
Avatar billede mugs Novice
29. november 2002 - 22:08 #7
Hvad sker der når du bruger superjab's forslag?
Avatar billede sjap Praktikant
29. november 2002 - 22:40 #8
bjarkekr

Du kan vælge blot at sammenligne heltalsdelen - dvs.

Int(starttid) = int(now())
Avatar billede bjarkekr Nybegynder
29. november 2002 - 23:15 #9
jeg vil jo gerne undgå at bruge LIKE på datoen da det ikke virker i PWS.
Avatar billede hossein Nybegynder
30. november 2002 - 11:38 #10
jeg ved ikke helt præcis hvad er problemet med PWS & IIS som du nævner, men det er ofte problem med date formatet, her kan du lave om den amerikanske dato format til den danske, indsæt den på toppen af din side (det er ASP som du bruger, ikke?):
session.LCID = 1030 ' Convert the american format of the date and time to danish
Avatar billede sjap Praktikant
30. november 2002 - 12:27 #11
bjarkekr

Hvis du bruger  Int(starttid) = int(now())  så bruger du heller ikke LIKE på datoen :-)
Avatar billede bjarkekr Nybegynder
30. november 2002 - 13:21 #12
jeg kan da ikke bruge Int på et datoformat.... ????
Avatar billede sjap Praktikant
30. november 2002 - 15:10 #13
Det er jo ikke på formatet, men på tallet. Formatet er jo blot et udtryk for hvordan tallet skal vises.
Avatar billede sjap Praktikant
30. november 2002 - 15:19 #14
Bruger du Microsofts datoformat gemmes dato i heltalsdelen og klokkeslettet gemmes i decimaldelen.

F.eks. bliver 1. december 2002 kl. 12 til 37591,5 i dette system. 37591 er antallet af dage siden 1. januar 1900 og 0,5 er kl. 12. Smart ik'
Avatar billede terry Ekspert
30. november 2002 - 15:27 #15
just out of interest
try this in the debug window (CTRL+G)

?format (Now(), "########.########")
or
?format ("2002-12-30 12:00:00", "########.########")
Avatar billede sjap Praktikant
30. november 2002 - 15:35 #16
Hej Terry

Hvad er nu det for noget med et "?"? Det kendte jeg ikke - det er da smart!
Avatar billede terry Ekspert
05. december 2002 - 08:55 #17
You use ? to ask for the result of the expression
so
?1+1
will (hopefully) be 2
Avatar billede sjap Praktikant
05. december 2002 - 16:29 #18
Jeg plejer at bruge print, men ? er da noget nemmere :-)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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