6

我在处理这个查询时遇到了问题。我不想选择已通过当前日期的 SYSTIME 的记录,而是显示未来日期的记录,即使它们已通过当前的 SYSTIME

SELECT * 
  FROM TABLE
 WHERE DATE>= CONVERT(date, SYSDATETIME())
   AND STARTTIME > CONVERT(time, SYSDATETIME())

这是查询。我知道为什么它不起作用,但我想不出一种方法来做我上面所说的。

4

2 回答 2

7
SELECT * 
FROM TABLE
WHERE 
  (
   (DATE = CONVERT(date, SYSDATETIME() 
    AND STARTTIME > CONVERT(time, SYSDATETIME()
   )
    OR Date > sysdatetime()
  )

您需要一个 or 条件,因为日期时间在不同的字段中,您必须首先解析今天的日期和时间,然后再解析所有未来的日期,无论时间如何。

于 2013-05-11T20:43:19.393 回答
0

这在很大程度上取决于原始数据类型是什么。假设它们是datetimedatetime

如果您将来想要任何东西,那么这很有效:

where [date] + starttime > sysdatetime()

如果您只想要未来的日期,请尝试:

where [date] > cast(sysdatetime() as date)

后者是我解释你的问题的方式,但我不能 100% 确定我的解释是正确的。

于 2013-05-11T20:47:43.023 回答