【问题标题】:Round up the DateTime to next Day in T-SQL?在 T-SQL 中将 DateTime 舍入到下一天?
【发布时间】:2013-03-07 21:38:03
【问题描述】:

我有一个日期,我想将其四舍五入到第二天。

例如

SomeDate DATETIME,
NewDate DATETIME

SomeDate = '01/05/2012 8:00:0 PM'
NewDate = Get the next day value here (in this sample it would be '01/05/2012 8:00:0 PM' + 4 Hours which is '02/05/2012 00:00:00 AM')

简单来说,我想要的是:

NewDate = '02/05/2012 00:00:00 AM'

有什么快速的方法吗?

谢谢!

【问题讨论】:

  • 1 毫秒足够到明天吗?是 1 纳秒吗?是 1 皮秒吗?
  • 如今,使用 SQL 的时间旅行很快。;)

标签: sql sql-server-2008 tsql datetime


【解决方案1】:

这应该可行:

SELECT DATEADD(Day, DATEDIFF(Day, 0, SYSDATETIME()), 1)

【讨论】:

    【解决方案2】:

    为了总能得到第二天你可以做的:

    SELECT DATEADD(day, 1, CAST(@date As Date))
    

    如果您想将 DateTime 值“四舍五入”到最接近的一整天,您可以这样做:

    SELECT 
       CASE WHEN CAST(@date As Time) < '12:00' THEN 
           CAST(@date As Date) 
       ELSE 
           DATEADD(day, 1, CAST(@date As Date))
       END
    

    【讨论】:

    • 另一种方法。工作正常。谢谢!
    【解决方案3】:

    第二天

    Select DateAdd(day, Datediff(day, 0, getdate()) +1, 0)
    

    从今天开始的月份:

    Select Dateadd(month, 1, Dateadd(Day, Datediff(day, 0, getdate()), 0))
    

    【讨论】:

    • 没有问题,请记住,您可以使用 dateadd 和 datediff 的多种组合来动态获取许多不同的日期。
    猜你喜欢
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多