Avatar billede mydream Nybegynder
26. august 2005 - 16:49 Der er 12 kommentarer og
1 løsning

Dato sammenligning

Jeg har en tabel med 2 smalldatetime, som jeg gerne vil have sammenlignet med dags dato i min sql sætning. Jeg skriver således:

sql = "SELECT * FROM Tip WHERE TipSlut > " & date & " AND TipStart < " & date

Der kommer ingen fejl, men heller ikke noget resultat, og der skal være 3 poster der passer. Det underlige er, at hvis jeg vender det sidste større end til et mindre end, ja så kommer alle 5 poster frem, selvom det er ligeså ulogisk.

Der må være noget galt med sammenligningen. Er der nogen, der har et skarpt øje?
Avatar billede busschou Praktikant
26. august 2005 - 16:51 #1
hvis det er access skal du have # omkring datoer
---
sql = "SELECT * FROM Tip WHERE TipSlut > #" & date & "# AND TipStart < #" & date &"#"
Avatar billede busschou Praktikant
26. august 2005 - 16:52 #2
hvad mener du med
---
Det underlige er, at hvis jeg vender det sidste større end til et mindre end
---
Det sidste er jo et mindre end? ;o)
Avatar billede mydream Nybegynder
26. august 2005 - 16:53 #3
Det er ikke access. Det er sql server.
Avatar billede busschou Praktikant
26. august 2005 - 16:53 #4
mon ikke du i øvrigt kan benytte between
---
sql = "SELECT * FROM Tip WHERE #"&date&"# Between TipStart And TipSlut"
Avatar billede busschou Praktikant
26. august 2005 - 16:54 #5
oki så ingen # :O) men du kan måske stadig benytte between
sql = "SELECT * FROM Tip WHERE "&date&" Between TipStart And TipSlut"
Avatar billede mydream Nybegynder
26. august 2005 - 16:55 #6
Der kommer stadig ingen resultat
Avatar billede busschou Praktikant
26. august 2005 - 16:58 #7
hvordan er smalldatetime formatet i sqlserver ?
For så kan det være du blot skal gøre så du får samme format fra din dato
Avatar billede mydream Nybegynder
26. august 2005 - 17:02 #8
I sql server: 31-12-2020
Jeg har forsøgt at lave formatet helt magen til og så sammenligne, men der får jeg fejlen:
Arithmetic overflow error converting expression to data type smalldatetime
Avatar billede busschou Praktikant
26. august 2005 - 17:05 #9
hmm det virker underligt, så har jeg desværre nok ikke flere ideer, håber en anden kommer forbi med et guldkorn :o)
Avatar billede mydream Nybegynder
26. august 2005 - 17:09 #10
Ja, jeg er også ved at være småirriteret. Har kæmpet med det i flere timer nu.
Avatar billede mydream Nybegynder
26. august 2005 - 19:30 #11
Jeg løste det ved at tage alle fra tabellen ned, og så ved hjælp af if then og en omskrivning af alle 3 værdier til 20050826 formatet sortere til og fra. Det burde jo bare også kunne lade sig gøre at omskrive til samme format i selve sql sætningen.

Er der nogen der har løsningen på det?
Avatar billede kjulius Novice
27. august 2005 - 00:36 #12
Hvis du bare skal sammenligne med den aktuelle dato kan du vel bruge SQL funktionen GETDATE(), sådan at du bare kan skrive:

sql = "SELECT * FROM Tip WHERE TipSlut > GETDATE() AND TipStart < GETDATE()"

eller måske endda

sql = "SELECT * FROM Tip WHERE GETDATE() BETWEEN TipSlut AND TipStart"
Avatar billede busschou Praktikant
27. august 2005 - 00:43 #13
tja i access og vel også mssql kan man jo benytte year, month, og day
Men det ved jeg så ikke om man kan i din sql
altså
year(TipSlut)&month(TipSlut)&day(TipSlut)
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