webForumDet fria alternativet
Logga in / Bli medlem

select mellan 2 datum

Databaser & SQL

7 svar · 407 visningar · startad av Arne

Medlem sedan maj 2000267 inlägg
Frågan#1

Använder MS sql 2008 och vill visa allt från tabellen calendar mellan columnen "starttid"s datum och columnen "sluttid"s datum.
starttid och sluttid är av SqlDbType.SmallDateTime

Denna sql sats fungerar inte om starttid och sluttid är samma dag
Jag får noll i min select. Däremot om jag har dagens datum som starttid och nästa dag som sluttid får jag respons.
Notera att starttid och sluttid kan skilja på timmar och minuter
Det är mellan datumen jag vill hämta, ej tiden/timmarna.....

Så här ser min selectsats ut:
SELECT * FROM calendar WHERE '"& Now &"' between starttid And sluttid

Medlem sedan apr. 2006409 inlägg
#2

Använd jämförelese operatorer i stället. tid >= start tid <= slut

Medlem sedan dec. 200012 464 inlägg
#3
where DATEADD(d,DATEDIFF(d,0,starttid),0) 
   between cast(current_timestamp as date) and DATEADD(d,DATEDIFF(d,0,sluttid),0)
Medlem sedan maj 2000267 inlägg
#4

Type date is not a defined system type.

Får felmeddelandet:
Type date is not a defined system type.
på where DATEADD(d,DATEDIFF(d,0,starttid),0)
between cast(current_timestamp as date) and DATEADD(d,DATEDIFF(d,0,sluttid),0)

Medlem sedan dec. 200012 464 inlägg
#5

Vilken kompabiltetsnivå har du? Date fanns inte i 2005 och tidigare.

Medlem sedan maj 2000267 inlägg
#6

sorry

Ursäkta mig, jag hade fel. Denna databas ligger på en 2005 server, de andra databasena hade jag flyttat till en 2008.....
Men den kommer i framtiden även den flyttas till en 2008 sql server.

Men nu ligger den på en MS SQL 2005 server...

Medlem sedan dec. 200012 464 inlägg
#7
where DATEADD(d,DATEDIFF(d,0,starttid),0) 
   between dateadd(d,datediff(d,0,current_timestamp),0) and DATEADD(d,DATEDIFF(d,0,sluttid),0)
Medlem sedan maj 2000267 inlägg
#8

Hämta månadens aktiviteter

Tack för det, det fungerade perfekt.

Har bara en kluring kvar som jag undrar om man kan få hjälp med.
Har en aktivitetsticker som jag vill att den ska hämta alla aktiviteter från dagens datum och hela aktuell månad t.ex januari.

Så här ser det ut.
T.ex. en aktivitet kan ligga i ett intervall mellan (starttid) 2009-01-05 till (sluttid ) 2009-01-08 och kanske dagens datum är 2009-01-07
Jag vill ju att även den aktivitet ska synas i aktivitetstickern, och reseterande aktiviteter för januari. Som då automatiskt fungerar resterande månader. Har jag tjorva till det för mycket eller går det att lösa?
Som jag fått till det nu får jag inte med den aktivitet som ligger i intervallet...

260 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)