Avatar billede hundevennen Nybegynder
16. november 2007 - 10:34 Der er 30 kommentarer og
1 løsning

udtræk hvor datoer er lig denne måned?

Har en DB med datofra og datotil.
Jeg vil lave en select som henter alle perioder i denne måned?
Avatar billede hundevennen Nybegynder
16. november 2007 - 10:36 #1
jeg bruger denne til at udtrække dagsdato
select * fra tabel where fradato = mindato or fradato < mindato and tildato >= mindato.
JEg skal måske bare ha en klausul på der siger, at det skal være i gældende måned?
Avatar billede fennec Nybegynder
16. november 2007 - 10:37 #2
Dvs at du f.eks har en række hvor datofra=28-10-2007 og datotil=03-11-2007, og sådan en række skal med på dit udtræk for hele måneden??
Avatar billede fennec Nybegynder
16. november 2007 - 10:41 #3
Så er det noget i denne stil:

datoMonthStart = dateserial(year(date),month(date),1)
datoMonthEnd = dateserial(year(date),month(date)+1,0)
sql = "select * from dinTabel where datofra<=#"& DBDate(datoMonthEnd) &"# and datotil>=#"& DBDate(datoMonthStart) &"#"
Avatar billede hundevennen Nybegynder
16. november 2007 - 11:01 #4
det ser ud som om jeg skal bruge din DBDate function??
Avatar billede fennec Nybegynder
16. november 2007 - 11:07 #5
Jeps :o)
Avatar billede nielle Nybegynder
16. november 2007 - 21:36 #6
Hvad med dette:

SELECT * FROM dinTabel
WHERE month(datofra) = month(now()) AND
      year(datoFra) = year(now()) AND
      month(datoTil) = month(now()) AND
      year(datoTil) = year(now())
Avatar billede hundevennen Nybegynder
17. november 2007 - 00:23 #7
tester på mandag
Avatar billede fennec Nybegynder
19. november 2007 - 08:35 #8
nielle >>
Dur ikke hvis fra/til er 30-10-2007 / 01-12-2007

Det skal være noget med "<=" og ">=". f.eks
SELECT * FROM dinTabel
WHERE month(datofra) <= month(now()) AND
      year(datoFra) <= year(now()) AND
      month(datoTil) => month(now()) AND
      year(datoTil) => year(now())

Den dur bare ikke hvis datoerne krydser års grænserne (31-12-2007 / 01-01-2008). Men det kan man sikkert også komme uden om på en måde...
Avatar billede hundevennen Nybegynder
19. november 2007 - 12:22 #9
der er perioder som strækker sig over årsskiftet
Avatar billede fennec Nybegynder
19. november 2007 - 12:50 #10
hundevennen >>
Det har min kode ingen problemer med :o)

Nielle prøvede bare at lave en ren DB løsning, så man kunne undgå min DBDate funktion.
Avatar billede fennec Nybegynder
19. november 2007 - 12:51 #11
... Altså min kode fra post 16/11-2007 10:41:55 har ingen problemer. Den virker 100% så længe du har min DBDate funktion (hvad du sikkert har)
Avatar billede hundevennen Nybegynder
19. november 2007 - 16:54 #12
Hej fennec - jeg ved din DBDate virker fra tidligere, men har ikke nået at teste
denne af - så læg et svar og tak som altid
Avatar billede hundevennen Nybegynder
19. november 2007 - 16:55 #13
Nielle - som sagt selecten skal virke over perioder der strækker sig over et år altså 2007 og 08
Avatar billede nielle Nybegynder
19. november 2007 - 18:11 #14
Jeg synes ikke at det fremgik helt af spørgsmålets oprindelige formulering om start- og slutdato skulle ligge inden i denne måned, eller om denne måned skulle ligge imellem start og slutdato (dog uden at tage hensyn til startdagen). Men siden at I snakker om årsskift, må det jo være den sidste.

Jeg har bestemt intet imod fennec's DBDate() funktion men man bør efter min mening også vide hvordan man kunne lave det i ren SQL:

SELECT * FROM dinTabel
WHERE
(
    year(datoFra) < year(now())
    OR
    (
        year(datoFra) = year(now())
        AND
        month(datofra) <= month(now())
    )
AND
(
    (
        year(now()) = year(datoTil)
        AND
        month(now()) <= month(datoTil)
    )
    OR
    year(now()) < year(datoTil)
)
Avatar billede nielle Nybegynder
19. november 2007 - 18:12 #15
Der mangler en ')' lige over den midterste and. :^)
Avatar billede hundevennen Nybegynder
19. november 2007 - 18:42 #16
tak nielle - tester den af imorgen og hvis den virker ligeså godt som fennecs, dobler jeg bare points op og forventer et svar fra begge
Avatar billede fennec Nybegynder
20. november 2007 - 08:44 #17
Lige præsis nielle. Kunne ikke selv gennemskue hvordan man klarede årsskiftet i ren SQL, men ofte er løsningen super simpel :o)

.o) <-- One Eyed Jack
Avatar billede hundevennen Nybegynder
20. november 2007 - 09:09 #18
fennec  der kommer en syntaxfejl
function DBDate(fDate)
dim fDag, fMon, fYear
    fDag = right("0"& day(fDate),2)
    fMon = right("0"& month(fDate),2)
    fYear = year(fDate)
    DBDate = fmon&"-"&fday&"-"&fyear
end function
    dim color

datoMonthStart = dateserial(year(date),month(date),1)
datoMonthEnd = dateserial(year(date),month(date)+1,0)
   
openconnection

strtext = "select * from til where dfra<=#"& DBDate(datoMonthEnd) &"# and dtil>=#"& DBDate(datoMonthStart) &"#"


fejl  Syntax error in date in query expression 'dfra<=#11--2007# and dtil>=#11--2007#'.
Avatar billede fennec Nybegynder
20. november 2007 - 09:14 #19
Det er derfor man har Option Explicit i toppen af sine sider:
<% Option Explicit %>

function DBDate(fDate)
dim fDay, fMon, fYear
    fDay = right("0"& day(fDate),2)
    fMon = right("0"& month(fDate),2)
    fYear = year(fDate)
    DBDate = fmon&"-"&fDay&"-"&fyear
end function

Det var et problem med variablerne fDay og fDag. Det skal selvfølgelig være samme navn.
Avatar billede fennec Nybegynder
20. november 2007 - 09:15 #20
Alle sådanne "stavefejl" vil en Option Explicit fange, da den så melder at variablen ikke er initialiseret.
Avatar billede hundevennen Nybegynder
20. november 2007 - 09:20 #21
Nielle - jeg får Missing ),] or item i query expression
Avatar billede nielle Nybegynder
20. november 2007 - 17:47 #22
Du har rettet koden i forhold til ?
Avatar billede nielle Nybegynder
20. november 2007 - 17:47 #23
... kommentaren 19/11-2007 18:12:45 ?
Avatar billede hundevennen Nybegynder
20. november 2007 - 19:12 #24
Nielle - jeg skal læse før jeg skriver - mangler vist lige at tilføje den ) over den midsterste AND - prøver igen imorgen
Avatar billede hundevennen Nybegynder
20. november 2007 - 19:14 #25
jeg har muligvis ikke skrevet den rigtig - men kan ikke se det på denne maskine jeg svarer fra - da sætningen skal ind på en asp side, skal der jo slettes nogle linieskift
Avatar billede nielle Nybegynder
20. november 2007 - 21:22 #26
Ja, den eneste grund til at jeg delte over flere linjer var nu også blot for at logikken i den skulle være mere synlig. :^)
Avatar billede hundevennen Nybegynder
21. november 2007 - 09:09 #27
fennec - hvis jeg vil udvide sætningen fra denne måned til f.eks januar måned eller
december???  altså en specifik måned og ikke aktuel måned???
Avatar billede hundevennen Nybegynder
21. november 2007 - 09:26 #28
Nielle - da jeg fik tilføjet en ) virker den så læg et svar og tak for hjælpen
Avatar billede nielle Nybegynder
21. november 2007 - 17:40 #29
Svar :^)
Avatar billede hundevennen Nybegynder
21. november 2007 - 18:22 #30
nielle - der er point til i nyt spm
Avatar billede nielle Nybegynder
21. november 2007 - 18:33 #31
Husk referencen begge veje:

http://www.eksperten.dk/spm/806937
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