SQL - Sélectionner les Enregistrements après la date/heure actuelle
J'ai donc un tableau figurant ci-dessous
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.
J'ai actuellement une règle en vertu de mon OÙ le rapport ainsi que des spectacles tous les jours entre aujourd'hui (de sorte qu'il serait 05/07/11 jusqu'à la même date, 3 ans plus tard 05/07/14).
Je tiens aussi à ajouter une autre règle, en vertu de l'Instruction where de sorte qu'il ne montre que des fois (quand la date actuelle est égale à la date de la table) deux heures avant l'heure actuelle.
Donc sur le 05/07/11 à 19:00 il doit montrer:
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
à 21:46 dans la même journée, il devrait maintenant afficher:
Date Time Field3 Field4 - etc.
--------------------------------------------------
08/07/11 17:30
08/07/11 19:00
09/07/11 19:00
Comment allais-je faire dans mon SQL? Je pense qu'il faudrait être un cas ou de cas lors de l'état, mais je n'ai pas été en mesure de s'en sortir?
AUSSI Date est générée à l'intérieur VB.Net, il en aurait le temps. En cours de sql (et de travail) du code est:
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')
Et quels types de données sont la DATE et l'HEURE de colonnes?
sql server 2008
date - la date de temps en temps(7)
OriginalL'auteur user829634 | 2011-07-05
Vous devez vous connecter pour publier un commentaire.
L'ajout de colonnes Date et de l'Heure et de la comparer à l'encontre de l'intervalle -2 heures +3 ans.
Pas sûr si l'un indice sur la Date peut être utilisé dans la requête ci-dessus. Si vous avez des problèmes de performances, vous pouvez essayer ce lieu. Il pourrait faire un meilleur travail en utilisant une Date index.
OriginalL'auteur Mikael Eriksson
Si vous utilisez les bases de données de temps et de champs de date, vous pouvez simple de les comparer à la date/heure actuelle
Eh bien, vous utilisez
WHERE (m.Date BETWEEN '05-Jul-2011' AND '05-Jul-2014')
dans votre exemple, pourquoi ne pas l'étendre à la fois, en passant l'calculée (via VB) la date et l'heure dans la clause where. Alors, quelle était la question, si vous avez la solution dans votre exemple?ok, je comprends ce que vous essayez de me dire, mais j'ai déjà essayé ça: 'OÙ (m.Date ENTRE '05-Jul-2011" ET "05-Jul-2014"), ET m.Heure >= '20:36" seulement revenir les dates qui sont plus que 5 juillet et avoir un moment plus tard à 20:36, je veux le montrer à tout moment à partir du 6 juillet, à partir de la, comme une sorte de calendrier, de tous les temps après le temps actuel - 2h
Mh, si votre SQL-server a un Datetime-type, on peut s'en tenir à cela. Les ouvrages suivants, pour moi (à l'aide de MySQL):
SELECT * FROM user_attribute WHERE registered_since BETWEEN '2010-12-13 17:54:57' AND '2011-02-09 08:36:11'
(Vous avez encore besoin de calculer les dates.) Vous pouvez également créer une vue, à l'aide de datetime-champs, si vous avez besoin de quitter la table de la structure.Que serait la Date > Now() OU (Date = Now() ET l'Heure>Maintenant()) je suppose?
OriginalL'auteur feeela
Je voudrais le faire en se joignant à une sous-requête. Quelque chose comme:
De sorte que la sous-requête vous donne votre Afficher la colonne que vous pouvez utiliser dans votre CAS, la déclaration et il n'votre filtrage.
OriginalL'auteur JBrooks