hen*_*ron 72 sql sql-server sql-server-2005 getdate
我的SQL查询有一个小问题.我正在使用GETDATE函数,但是,假设我在下午5点执行脚本,它将在2011年12月12日下午5点至2011年12月18日下午5点之间提取记录.如何使整个12/12/2011 - 12/18/2011的记录基本上忽略时间.
我的剧本:
WHERE Orders.OrderStatus = 'Shipped'
AND Orders.ShipDate > (GETDATE()-6)
Run Code Online (Sandbox Code Playgroud)
Dav*_*haw 103
在SQL Server 2008及更高版本中,您可以将其转换DateTime为a Date,从而删除time元素.
WHERE Orders.OrderStatus = 'Shipped'
AND Orders.ShipDate >= (cast(GETDATE()-6 as date))
Run Code Online (Sandbox Code Playgroud)
在SQL Server 2005及更低版本中,您可以使用:
WHERE Orders.OrderStatus = 'Shipped'
AND Orders.ShipDate >= DateAdd(Day, Datediff(Day,0, GetDate() -6), 0)
Run Code Online (Sandbox Code Playgroud)
Dar*_*Lee 47
这是我发现的最简单的事情
-- Midnight floor of current date
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))
Run Code Online (Sandbox Code Playgroud)
DATEDIFF返回1900-1-1之前或之后的整数天数,转换日期时间有义务将其带回午夜的该日期.
由于DateDiff返回一个整数,您可以使用加或减天来获得正确的偏移量.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)
Run Code Online (Sandbox Code Playgroud)
这不是四舍五入这是截断...但我认为这就是被问到的.(要圆形添加一个并截断...那也不是四舍五入,那个天花板,但很可能也是你想要的.要真正圆形添加.5(这样做吗?)并截断.
事实证明,您可以将.5添加到GetDate()并且它按预期工作.
-- Round Current time to midnight today or midnight tomorrow
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))
Run Code Online (Sandbox Code Playgroud)
我在SQL Server 2008上做了所有试验,但我认为这些功能也适用于2005.
小智 8
--
-- 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
Run Code Online (Sandbox Code Playgroud)
您可以将日期时间转换为日期,然后再转换回日期时间。这将重置时间戳。
选择 getdate() --2020-05-05 13:53:35.863 选择演员(演员(GETDATE()作为日期)作为日期时间)--2020-05-05 00:00:00.000
小智 5
SELECT getdate()
Run Code Online (Sandbox Code Playgroud)
结果:2012-12-14 16:03:33.360
SELECT convert(datetime,convert(bigint, getdate()))
Run Code Online (Sandbox Code Playgroud)
结果2012-12-15 00:00:00.000
| 归档时间: |
|
| 查看次数: |
129827 次 |
| 最近记录: |