首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将SQL DateTime舍入到午夜。

将SQL DateTime舍入到午夜。
EN

Stack Overflow用户
提问于 2011-12-19 06:24:57
回答 8查看 168K关注 0票数 89

我的SQL查询有一个小问题。我使用的是GETDATE函数,但是,假设我在下午5点执行脚本,它将在12/12/2011 5‘m到12/18/2011 5’m之间拉出记录我怎么才能让它把整个12/12/2011 - 12/18/2011的记录拉出来,基本上忽略时间。

我的脚本:

代码语言:javascript
复制
WHERE Orders.OrderStatus = 'Shipped'  
AND Orders.ShipDate > (GETDATE()-6)  
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-12-19 06:29:29

在SQL Server2008和更高版本中,可以将时间转换为Date,这会删除DateTime元素。

代码语言:javascript
复制
WHERE Orders.OrderStatus = 'Shipped'  
AND Orders.ShipDate >= (cast(GETDATE()-6 as date))  

在SQL Server 2005及更低版本中,您可以使用:

代码语言:javascript
复制
WHERE Orders.OrderStatus = 'Shipped'  
AND Orders.ShipDate >= DateAdd(Day, Datediff(Day,0, GetDate() -6), 0)
票数 118
EN

Stack Overflow用户

发布于 2012-06-21 06:29:39

这是我找到的最简单的东西

代码语言:javascript
复制
-- Midnight floor of current date

SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))

DATEDIFF返回1900-1-1之前或自1900-1-1以来的整数天数,Convert Datetime友好地在午夜将其返回到该日期。

由于DateDiff返回一个整数,您可以使用add或subtract days来获得正确的偏移量。

代码语言:javascript
复制
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)

这不是四舍五入,这是truncating...But,我想这就是我们要问的。(为了舍入,添加一个和truncate...and,它也不是舍入的,那是天花板,但也很可能是你想要的。要真正舍入,请添加.5 (这行吗?)然后截断。

事实证明,您可以将.5添加到GetDate()中,它就会按预期工作。

代码语言:javascript
复制
-- Round Current time to midnight today or midnight tomorrow

SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))

我在SQL Server2008上做了所有的测试,但我认为这些功能也适用于2005年。

票数 58
EN

Stack Overflow用户

发布于 2014-08-28 07:33:13

代码语言:javascript
复制
--
-- SQL DATEDIFF getting midnight time parts 
--
SELECT GETDATE() AS Now, 
   Convert(DateTime, DATEDIFF(DAY, 0, GETDATE())) AS MidnightToday,
   Convert(DateTime, DATEDIFF(DAY, -1, GETDATE())) AS MidnightNextDay,
   Convert(DateTime, DATEDIFF(DAY, 1, GETDATE())) AS MidnightYesterDay
go
Now                   MidnightToday          MidnightNextDay        MidnightYesterDay     
 --------------------  ---------------------  ---------------------  --------------------- 
 8/27/2014 4:30:22 PM  8/27/2014 12:00:00 AM  8/28/2014 12:00:00 AM  8/26/2014 12:00:00 AM 
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8555316

复制
相关文章

相似问题

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