我遇到了这个查询的问题。我想不选择已经过SYSTIME当前日期的记录,但是显示未来日期的记录,即使它们已经通过了当前的SYSTIME
SELECT *
FROM TABLE
WHERE DATE>= CONVERT(date, SYSDATETIME())
AND STARTTIME > CONVERT(time, SYSDATETIME())
这是查询。我知道为什么它不起作用,但我想不出办法去做我上面说的。
答案 0 :(得分:5)
SELECT *
FROM TABLE
WHERE
(
(DATE = CONVERT(date, SYSDATETIME()
AND STARTTIME > CONVERT(time, SYSDATETIME()
)
OR Date > sysdatetime()
)
您需要一个或条件,因为日期时间在不同的字段中,您必须首先解决今天的日期和时间,然后是所有未来日期,无论时间如何。
答案 1 :(得分:0)
这很大程度上取决于原始数据类型。我们假设它们是date
,time
或datetime
。
如果您将来想要任何东西,那么这可行:
where [date] + starttime > sysdatetime()
如果您只想要未来日期,请尝试:
where [date] > cast(sysdatetime() as date)
后者是我如何解释你的问题,但我不能100%确定我的解释是正确的。
答案 2 :(得分:0)
SELECT Date,
TomorrowMidnight = Dateadd(dd, Datediff(dd, 0, Getdate()) + 1, 0),
TomorrowTimeNow = Dateadd(dd, 1, Getdate())
FROM dbo.test
WHERE date >= Getdate()
AND date < Dateadd(dd, Datediff(dd, 0, Getdate()) + 1, 0)
OR date > Dateadd(dd, 1, Getdate())
这将选择比现在更晚但明天更早的午夜{(1}}以及晚于(现在+ 1天)datetime
列的所有行。
修改:我忽略了datetime
列。也许您刚刚使用它来澄清您的要求,但实际上我确实有一个time
列作为我的答案。