SQL - Selectați înregistrări după data / ora curentă

Deci, am un tabel prezentat mai jos

Date       Time        Field3        Field4 - etc.
--------------------------------------------------
05/07/11   17:45       blah          blah
05/07/11   19:45       blah          blah
08/07/11   17:30
08/07/11   19:00
09/07/11   19:00

etc.

În prezent, am o regulă în declarația WHERE, astfel încât să fie afișată toate zilele de astăzi (deci ar fi 05/07/11 până la aceeași dată 3 ani mai târziu 05/07/14).

Aș dori, de asemenea, să adaug o altă regulă sub Declarația WHERE, astfel încât să arate doar orele (când data curentă este egală până la data din tabel) cu două ore înainte de ora curentă.

Deci, pe 05/07/11 la 19:00 ar trebui să apară:

Date       Time        Field3        Field4 - etc.
--------------------------------------------------
05/07/11   17:45       blah          blah
05/07/11   19:45       blah          blah
08/07/11   17:30
08/07/11   19:00
09/07/11   19:00

la 21:46 în aceeași zi, ar trebui să arate acum:

Date       Time        Field3        Field4 - etc.
--------------------------------------------------
08/07/11   17:30
08/07/11   19:00
09/07/11   19:00

Cum aș face acest lucru în SQL? Mă gândesc că ar trebui să fie o declarație if then sau case when then, dar nu am reușit să o rezolv?

ȘI Data este generată în VB.Net, la fel ar fi și timpul. Codul sql (și funcțional) actual este:

SELECT m.MatchID Manage, m.Date, m.Time, t.TeamCode "Home", b.TeamCode "Away", 
g.GroundName "Ground", ( SUBSTRING(u.GivenName,1,1) + '. ' + RTRIM(u.Surname) ) AS Referee, 
( SUBSTRING(v.GivenName,1,1) + '. ' + RTRIM(v.Surname) ) AS "Assistant 1", 
( SUBSTRING(w.GivenName,1,1) + '. ' + RTRIM(w.Surname) ) AS "Assistant 2", 
a.FOfficialID, a.AssessorID, a.RefereeAID, a.AReferee1AID, a.AReferee2AID, 
a.FOfficialAID, a.AssessorAID, 'Details' "Details", t.AgeGroupID, r.WetWeatherID 

FROM Match m 
LEFT OUTER JOIN Appointment a ON m.MatchID=a.MatchID 
LEFT OUTER JOIN WetWeather r ON r.MatchID=m.MatchID 
INNER JOIN Team t ON m.HomeTeamID=t.TeamID 
INNER JOIN Team b ON m.AwayTeamID=b.TeamID 
INNER JOIN Ground g ON g.GroundID=m.GroundID 
LEFT OUTER JOIN Users u ON u.UserID=a.RefereeID 
LEFT OUTER JOIN Users v on v.UserID=a.AReferee1ID 
LEFT OUTER JOIN Users w on w.UserID=a.AReferee2ID 

WHERE (m.Date BETWEEN '05-Jul-2011' AND '05-Jul-2014') 
7
задан user829634 5 July 2011 в 12:21
поделиться