首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中显示当前日期的日期值

问在Server中显示当前日期的日期值
EN

Stack Overflow用户
提问于 2015-03-18 05:40:27
回答 2查看 118关注 0票数 0

我正在尝试根据应该在今天的日期内的日期来筛选值。我正在使用下面的查询,但是查询不像预期的那样工作。

这就是我在Server中使用的内容。

代码语言:javascript
复制
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”之间的值。

请指点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-18 05:45:39

使用>=和<比使用BETWEEN要好得多

代码语言:javascript
复制
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条件是:

代码语言:javascript
复制
WHERE
    date >= '2015-03-18 00:00:00'
    AND date < '2015-03-19 00:00:00'

或者,您也可以使用以下方法:

代码语言:javascript
复制
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.

票数 1
EN

Stack Overflow用户

发布于 2015-03-18 06:22:06

由于您期待'2015-03-18 00:00:00:00“和'2015-03-18 23:59:59之间的值。所以,您可以简单地比较日期部分。

您可以使用Cast()/Convert():

代码语言:javascript
复制
SELECT *
FROM Table
WHERE
    cast(date as date) =cast(getdate() as date)

包括2015-03-18 :00:00:00和'2015-03-18 23:59:59‘

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29114860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档