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')