30. oktober 2003 - 13:16Der er
16 kommentarer og 1 løsning
Tid og dato i sql
Hejsa
Jeg har et stort problem med de latterlige tider og datoer i min sql. Med følgende sql henter jeg alle mine poster ud:
Sql2 = "SELECT BR.BookingRessourceID, BR.Antal From BookingRessource as BR, Booking as B Where BR.BookingID = B.BookingID and BR.RessourceID = " & db_RessourceID
Nu vil jeg så gerne kun hente dem ud hvor det gælder at: dato = 31-10-2003 strtid = 08:00
Men det har jeg en del problemer med. Hvis jeg laver følgende sql:
Sql2 = "SELECT BR.BookingRessourceID, BR.Antal From BookingRessource as BR, Booking as B Where BR.BookingID = B.BookingID and BR.RessourceID = " & db_RessourceID & " and B.StartDato = '" & dato & "' Or B.SlutDato = '" & dato & "' or (B.StartDato < '" & dato & "' and B.SlutDato > '" & dato & "') and B.StartTid = '" & strtid & "' Or B.SlutTid = '" & strtid & "' or (B.StartTid < '" & strtid & "' and B.SlutTid > '" & strtid & "')"
Så bliver alle mine værdier hentet ud 4 gange hvor den jo egentligt kun skulle hente 2 poster ud. Min dato- og tids-felt ligger i en ms sql database og er af typen datetime med en længde på 8.
Hvad er det jeg laver forkert i min dato og tid? Plz help!
Sql2 = "SELECT BR.BookingRessourceID, BR.Antal FROM BookingRessource as BR, Booking as B WHERE BR.BookingID = B.BookingID AND BR.RessourceID = " & db_RessourceID & " AND ((B.StartDato = '" & dato & "' & AND B.StartTid = '" & strtid & "') OR (B.SlutDato = '" & dato & "' & AND B.SlutTid = '" & strtid & "'))"
SELECT BR.BookingRessourceID, BR.Antal From BookingRessource as BR, Booking as B Where BR.BookingID = B.BookingID and BR.RessourceID = 7 and B.StartDato = '31-10-2003' Or B.SlutDato = '31-10-2003' or (B.StartDato < '31-10-2003' and B.SlutDato > '31-10-2003') and B.StartTid = '08:00' Or B.SlutTid = '08:00' or (B.StartTid < '08:00' and B.SlutTid > '08:00')
For y = 1 to Session("RessourceAntal") Ressource = Split(Session("Ressource-" & y & ""), "#") If Cint(db_RessourceID) = Cint(Ressource(0)) Then If db_Antal > 1 Then Sql2 = Set rs2 = conn.execute(sql2) Do while not rs2.EOF Bla rs2.movenext Loop End If End If End If Next
Men så skal jeg have lidt hjælp til at lave en datediff. Følgende virker fint: If DateDiff("s", "01-01-1950", StartDato) = DateDiff("s", "01-01-1950", dato) Or DateDiff("s", "01-01-1950", SlutDato) = DateDiff("s", "01-01-1950", dato) or (DateDiff("s", "01-01-1950", StartDato) < DateDiff("s", "01-01-1950", dato) and DateDiff("s", "01-01-1950", SlutDato) > DateDiff("s", "01-01-1950", dato) ) Then
Men hvordan får jeg den til at checke med dato og tid så den altså checker en startdato der hedder: StartDato & "-" & StartTid eller hvordan det nu skal udskrives i en datediff.
Nu har jeg fået det til at virke ved at hente det ud og checke i koden. Jeg vil meget gerne have hvis der er en der kan komme med det samme til min sql så jeg kun henter det ud som jeg skal bruge!
Sql2 = "SELECT BR.BookingRessourceID, BR.Antal, BR.RessourceID, B.StartDato, B.SlutDato, B.StartTid, B.SlutTid From BookingRessource as BR, Booking as B Where BR.BookingID = B.BookingID and BR.RessourceID = " & db_RessourceID Set rs2 = conn.execute(sql2)
Do while not rs2.EOF StartDato = rs2("StartDato") SlutDato = rs2("SlutDato") StartTid = rs2("StartTid") SlutTid = rs2("SlutTid")
If Len(strtid) = 5 Then strtid = strtid & ":00" End If
If rs2("RessourceID") = db_RessourceID Then If DateDiff("s", "01-01-1950 00:00:00", StartDato & " " & StartTid) = DateDiff("s", "01-01-1950 00:00:00", dato & " " & strtid) Or DateDiff("s", "01-01-1950 00:00:00", SlutDato & " " & SlutTid) = DateDiff("s", "01-01-1950 00:00:00", dato & " " & strtid) or (DateDiff("s", "01-01-1950 00:00:00", StartDato & " " & StartTid) < DateDiff("s", "01-01-1950 00:00:00", dato & " " & strtid) and DateDiff("s", "01-01-1950 00:00:00", SlutDato & " " & SlutTid) > DateDiff("s", "01-01-1950 00:00:00", dato & " " & strtid) ) Then Antal = CInt(Antal) + CInt(rs2("Antal")) End If End if rs2.movenext Loop
Du skal ikke bruge dansk datoformat i SQL-sætninger. Brug enten:
dato = 2003-10-31
Eller:
dato = 10-31-2003
Synes godt om
Ny brugerNybegynder
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.