Avatar billede pointwood Nybegynder
03. oktober 2000 - 12:59 Der er 4 kommentarer og
1 løsning

Hente datoer (smalldatetime) i MS SQL Server7

Jeg har et resultset der indeholder 2 datoer (startdato og slutdato) i hver række i en MS SQL Server7 database. Jeg regner med at hente disse over i et par Vectorer og derefter for hver række undersøge dette:
- Dags dato er >= startdato
- Dags dato er <= slutdato

Det skal selvfølgeligt gøres for at tjekke om den pågældende række skal vises for brugeren.

Hvorledes gøres det?
Avatar billede sjensen Nybegynder
03. oktober 2000 - 17:06 #1
Når du siger du har et resultatset, er det så et resultat af et tidligere SQL kald, eller er det \"bare\" den almindelige tabel du mener.

Hvis det er det første, har du så ikke mulighed for at ændre det SQL kald således at den samtidig kun selecterer de records hvor datoen ligger indenfor datointervallet ?

og hvis det er den anden så skal du jo alligevel selv lave SQL kaldet og kan derfor bruge
\"... where ((startdato ge now()) and (slutdato le now())\"
Avatar billede pointwood Nybegynder
03. oktober 2000 - 17:19 #2
Du siger noget - den mulighed tænkte jeg slet ikke på :-)

Men hvordan henter jeg så dags dato som skal sættes ind i SQL-kaldet og i SQL-kaldet, tjekker de 2 datoer op mod hinanden?

Dette her forstår jeg ikke helt, dvs. jeg forstår godt hvad du mener, men Det er svjv ikke ren SQL...:
\"... where ((startdato ge now()) and (slutdato le now())\"
                      ^^                      ^^
Avatar billede pointwood Nybegynder
03. oktober 2000 - 17:20 #3
Ups...mine \"^^\" passer ikke - det jeg ikke forstår er \"ge\" og \"le\" i ovenstående sætning... :-)
Avatar billede sjensen Nybegynder
03. oktober 2000 - 17:26 #4
Javasyntaxen er jeg ikke helt sikker på, men princippet er først og fremmest at du pakker begge tests ind i samme parantes. (test1 and test2)

Desuden skal hver test være omkranset af en parantes, og GE betyder \"Greater Than or Equal to\" og LE betyder \"Less than or equal to\". Det svarer til dine >= og <=

Så spørgsmålet er hvad dine felter i SQl basen hedder. Så vidt jeg husker har du dagsdato til rådighed med funktionen NOW() men ellers kan du starte med at lægge dagsdato ind i en var (f.eks. kaldet dagsdato) og så bruge den i testen:
(Jeg gik ud fra at navnene \"slutdato\" og \"startdato\" er dine feltnavne i SQL)

select * from tabel where ((startdato >= dagsdato) AND (slutdato <= dagsdato)

eller

select * from tabel where ((startdato ge dagsdato) AND (slutdato le dagsdato)

Avatar billede sjensen Nybegynder
03. oktober 2000 - 17:30 #5
Jeg mener nu at de koder jeg bruger er standard SQL (og det samme gælder for de fleste programmeringssprog):

LT = Less Than (<, Mindre end)
LE = Less Than or Equal To (<=, Mindre end eller lig med)
EQ = Equal to (=, ligmed)
GE = Greater Than or Equal to (>=, Større end eller lig med) og
GT = Greater Than (>, Større end)

Det bør gælde for alle sprog og sql varianter.
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