gpt4 book ai didi

SQL - 选择当前日期/时间之后的记录

转载 作者:行者123 更新时间:2023-12-04 11:59:13 28 4
gpt4 key购买 nike

所以我在下面列出了一张表格

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

等等。

我目前在我的 WHERE 语句下有一个规则,所以它显示了今天之间的所有日子(所以它将是 05/07/11 直到 3 年后的同一日期 05/07/14)。

我还想在 WHERE 语句下添加另一个规则,以便它只显示当前时间前两小时的时间(当当前日期等于表中的日期时)。

所以在 05/07/11 在 19:00 它应该显示:
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,它现在应该显示:
Date       Time        Field3        Field4 - etc.
--------------------------------------------------
08/07/11 17:30
08/07/11 19:00
09/07/11 19:00

我将如何在我的 SQL 中执行此操作?我认为它必须是 if then 或 case when then 语句,但我无法解决?

也日期是在 VB.Net 中生成的,时间也是如此。当前的 sql(和工作)代码是:
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')

最佳答案

添加日期和时间列,并与 -2 小时 +3 年的时间间隔进行比较。

select *
from YourTable
where Date+cast(Time as datetime) between dateadd(hour, -2, getdate()) and dateadd(year, 3, getdate())

不确定是否可以在上述查询中使用 Date 上的任何索引。如果你有性能问题,你可以试试这个。使用日期索引可能会做得更好。
select *
from YourTable
where Date between cast(getdate() as date) and dateadd(year, 3, getdate()) and
Date+cast(Time as datetime) > dateadd(hour, -2, getdate())

关于SQL - 选择当前日期/时间之后的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6582373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com