我正在尝试根据应该在今天的日期内的日期来筛选值。我正在使用下面的查询,但是查询不像预期的那样工作。
这就是我在Server中使用的内容。
select values
from table
where date between DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
and GETDATE()如果我在2015年3月18日执行查询,则我希望筛选“2015 -03-18 00:00:00”和“2015-03-18 23:59:59”之间的值。
请指点。
发布于 2015-03-18 05:45:39
使用>=和<比使用BETWEEN要好得多
SELECT *
FROM Table
WHERE
date >= CAST(CAST(GETDATE() AS DATE) AS DATETIME)
AND date < DATEADD(DAY, 1, CAST(CAST(GETDATE() AS DATE) AS DATETIME))CAST(CAST(GETDATE() AS DATE) AS DATETIME)将获得当前日期,而不需要时间部分,即2015-03-18 00:00:00。
DATEADD(DAY, 1, CAST(CAST(GETDATE() AS DATE) AS DATETIME))将在第二天为您提供,再次没有时间部分。
因此,反过来,您的WHERE条件是:
WHERE
date >= '2015-03-18 00:00:00'
AND date < '2015-03-19 00:00:00'或者,您也可以使用以下方法:
SELECT *
FROM Table
WHERE
date >= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) -- beginning of this day
AND date < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) + 1, 0) -- beginning of next day 有关更多日期计算,请参阅此article.
发布于 2015-03-18 06:22:06
由于您期待'2015-03-18 00:00:00:00“和'2015-03-18 23:59:59之间的值。所以,您可以简单地比较日期部分。
您可以使用Cast()/Convert():
SELECT *
FROM Table
WHERE
cast(date as date) =cast(getdate() as date)包括2015-03-18 :00:00:00和'2015-03-18 23:59:59‘
https://stackoverflow.com/questions/29114860
复制相似问题