首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中获取特定日期值

在SQL中获取特定日期值
EN

Stack Overflow用户
提问于 2013-12-25 10:05:17
回答 1查看 216关注 0票数 0

我需要执行一个查询,其中要求日期值为current date(or specific date) - 7 days。我遇到了很多这样的解决方案,

(SELECT CONVERT(VARCHAR(10),DATEADD(DD, DATEDIFF(DD, 0, GETDATE()), -7),120))

然而,为了获得一周的价值,我从here.中找到了一个类似的解决方案

代码语言:javascript
复制
SELECT CONVERT(varchar(25),PostDate,107) AS duration, count(*) AS posts
 FROM MDBDetails 
 WHERE DATEDIFF(week, PostDate,GETDATE()) = 1
 GROUP BY  CONVERT(varchar(25),PostDate,107)
 ORDER BY duration

但是,像GETDATE() -7或下面的代码这样的简单查询似乎为我做了必要的工作。

代码语言:javascript
复制
DECLARE @Date DATETIME = '12/25/13'
SELECT @Date-7

我的问题是,上面用数值减去数据的方法不是一个好的实践吗?当然,我得到的DATEDIFF的使用也可以扩展到指定月份和年份。但是,上述方法是一个好的做法吗?是否需要只使用DATEDIFF方法来获得确切的日期值?与前两种方法相比,有什么主要的缺点或差异吗?(除减去月份和年份外)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-25 10:13:12

你最好使用DATEADD函数。

因为如果有一天您决定将列的日期类型从DATETIMESMALLDATETIME更改为DATE,则会出现错误。

您不能从DATE中减去天数。您应该只使用DATEADD函数。

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

https://stackoverflow.com/questions/20771524

复制
相关文章

相似问题

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