Avatar billede chw Nybegynder
02. februar 2006 - 12:33 Der er 35 kommentarer

hjælp til sql

Hej, jeg har en fradato og en tildato i min database. Når jeg søger søger jeg også med en tildato og fradato. Jeg kan ikke helt gennemskue hvordan min sql skal se ud for at det skal fungere.

lad os sige jeg i databasen har fradato=05-01-2006 og tildato=10-01-2005.

hvis jeg søger fra 01-01-2006 til 08-01-2006 skal tabellen vises.

hvis jeg søger fra 07-01-2006 til 08-01-2006 skal tabellen også vises.

osv.
Avatar billede cdull Nybegynder
02. februar 2006 - 13:15 #1
hvornår skal den ikke vises?
Avatar billede chw Nybegynder
02. februar 2006 - 13:19 #2
hvis jeg søger fra 08-01-2006 til 15-01-2006 skal den også vises. Ved ikke helt hvordan det skal forklares
Avatar billede chw Nybegynder
02. februar 2006 - 13:20 #3
Altså hvis noget af intervallet mellem det man søger på, er en del af intervallet med det i databasen
Avatar billede cdull Nybegynder
02. februar 2006 - 13:21 #4
så hvis man søger på 10-10-2006 til 10-12-2005 skal det IKKE vises , er det rigtigt?
Avatar billede chw Nybegynder
02. februar 2006 - 13:22 #5
jo det skal til. Datoerne er til og med. men søger du på 11-10-2005 - 12-10-2006 skal det selvfølgelig ikke vises
Avatar billede mikkel_sommer Nybegynder
02. februar 2006 - 13:23 #6
hvis det du mener er at tabellen skal vises hvis bare en af datoerne falder indenfor perioden i databasen kan du bruge noget i retning af:

select *
from tabelNavn
where (søgeStartDato > tabelStartDaro and søgeStartDato < tabelSlutDato)
or (søgeSlutDato > tabelStartDaro and søgeSlutDato < tabelSlutDato)
Avatar billede chw Nybegynder
02. februar 2006 - 13:26 #7
Jeg kigger på det igen lidt senere. Tak
Avatar billede cdull Nybegynder
02. februar 2006 - 13:27 #8
SELECT column FROM table WHERE (fradato =< fra and tildato => fra) or (tildato => til and fradato =< til)

tror du det kan være noget i den stil?
Avatar billede chw Nybegynder
02. februar 2006 - 15:37 #9
Jeg har førsøgt din metode.

Jeg har en tabel som har fromdate = 27-01-2005 og todate= 29-01-2005. Denne post skulle jo komme frem med når jeg søger helt fra d. 1-01 til den 9-2, men det gør den ikke??



where  (datefrom <= convert(datetime,1-01-2006,103)  and  dateto >=  convert(datetime,1-01-2006,103))  or (dateto >= convert(datetime,9-2-2006,103) and datefrom <= convert(datetime,9-2-2006,103))
Avatar billede chw Nybegynder
02. februar 2006 - 16:07 #10
Der er noget galt. Jeg skriver dette i queryanalyzeren:

select * from db_tilbud where dateto>convert(datetime,2-02-2006,103)

Den returner kolloner hvor dateto er 2006-01-29??????
Avatar billede cdull Nybegynder
02. februar 2006 - 16:08 #11
De eneste du faktisk ikke skal have med er perioder hvor begge datoer er over slutdato eller hvor de begge er under startdato? Am I right?
Avatar billede mikkel_sommer Nybegynder
02. februar 2006 - 16:13 #12
er der ikke noget galt med dine datoer?

du har from og to i 2005 og den som skal ligge imellem er 2006...(både to og from vil med disse datoer altid være <)

...eller har jeg helt misforstået dit spørgsmål
Avatar billede chw Nybegynder
02. februar 2006 - 16:14 #13
ja..måske *s*. Men forstår du hvorfor jeg får rækker returneret her:

dateto>convert(datetime,2-02-2006,103)

og min dateto er 2006-01-29
Avatar billede chw Nybegynder
02. februar 2006 - 16:16 #14
nej jeg har ikke noget i 2005. Det er en fejl jeg har skrevet det. Det hele er 2006
Avatar billede chw Nybegynder
02. februar 2006 - 16:19 #15
ved ikke om det har noget med formatet at gøre. Som du kan se for jeg fra koden f.eks. 2-02-2006 men i databasen står der f.eks. 2006-01-26.
Avatar billede mikkel_sommer Nybegynder
02. februar 2006 - 16:20 #16
Prøv med

select convert(datetime,'2-03-2006',103)
Avatar billede mikkel_sommer Nybegynder
02. februar 2006 - 16:21 #17
uden single quotes er det her hvad du får ud:

1894-07-04 00:00:00.000
Avatar billede mikkel_sommer Nybegynder
02. februar 2006 - 16:21 #18
...altså med select convert(datetime,2-03-2006,103)
Avatar billede mikkel_sommer Nybegynder
02. februar 2006 - 16:22 #19
hov glem "select"....
Avatar billede cdull Nybegynder
02. februar 2006 - 16:26 #20
where  (datefrom >= convert(datetime,1-01-2006,103)  and  (dateto >=  convert(datetime,9-2-2006,103))and datefrom <= convert(datetime,9-2-2006,103))  or (datefrom >= convert(datetime,1-01-2006,103) and dateto <= convert(datetime,9-2-2006,103)) or ((datefrom <= convert(datetime,1-01-2006,103))and dateto >= convert(datetime,1-01-2006)and dateto <= convert(datetime,9-2-2006,103))


hvis du er heldig så virker det hahahaha.
Avatar billede chw Nybegynder
02. februar 2006 - 16:41 #21
Det ser ud til at fungere cdull, og tak til sommer, for jeg skulle også ha ' med
Avatar billede cdull Nybegynder
02. februar 2006 - 19:16 #22
Så lidt, håber det virker. Ellers må du jo bare komme igen.
Avatar billede arne_v Ekspert
02. februar 2006 - 22:02 #23
parameters !
Avatar billede chw Nybegynder
02. februar 2006 - 23:32 #24
hvad mener du med parameters! arne??
Avatar billede arne_v Ekspert
03. februar 2006 - 02:31 #25
det er noget som goer at man helt undgaar den slags dato konverteringer

hvad sprog programmer du i ?

(syntax afhaenger lidt af sproget)
Avatar billede cdull Nybegynder
03. februar 2006 - 08:21 #26
Kan kun give arne_v ret at hvis du har mulighed for det, så brug parameters.
Avatar billede _codefusion_ Nybegynder
03. februar 2006 - 08:55 #27
Hvis du bruger MSSQL kan du gøre det på følgende måde.
-- fradato og tildato er søge parameterne
-- startdato og slutdato er datoerne i din tabel.
SELECT * FROM _dinTabel
WHERE (DATEDIFF(day, fradato, startdato) >= 0 AND
      DATEDIFF(day, fradato, slutdato) <= 0) OR
      (DATEDIFF(day, tildato, startdato) >= 0 AND
      DATEDIFF(day, tildato, slutdato) <= 0)
Avatar billede chw Nybegynder
03. februar 2006 - 11:56 #28
jeg koder i c#
Avatar billede dr_chaos Nybegynder
03. februar 2006 - 16:02 #29
Avatar billede arne_v Ekspert
03. februar 2006 - 22:22 #30
Avatar billede chw Nybegynder
07. februar 2006 - 14:17 #31
ok, ja jeg skal ha lavet det om til stored procedure senere. Gider jeg bare ikke lige nu, da der også er andre ting jeg skal ha med i sql. Men tak alle
Avatar billede arne_v Ekspert
22. april 2006 - 23:27 #32
tid at få afsluttet dette spørgsmål ?
Avatar billede chw Nybegynder
03. februar 2007 - 18:02 #33
lig et svar
Avatar billede arne_v Ekspert
03. februar 2007 - 19:14 #34
hvem ?
Avatar billede chw Nybegynder
09. februar 2007 - 14:06 #35
gør du bare det
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