【问题标题】:T-SQL to trim a datetime to the nearest date?T-SQL 将日期时间修剪为最近的日期?
【发布时间】:2010-10-07 00:11:49
【问题描述】:

重复 What's the BEST way to remove the time portion of a datetime value (SQL Server)?

我有一列可以跟踪使用日期时间创建事物的时间,但我想生成一个按天对它们进行分组的报告,因此我需要一种方法来消除日期时间列的时间部分。

我该怎么做?

【问题讨论】:

    标签: sql tsql datetime date-arithmetic


    【解决方案1】:

    为什么不直接转换为日期:

    select convert(date, getdate())
    

    这会截断日期,而不是轮次。要舍入 Days,请执行以下操作:

    select convert(date, getdate() + 0.5)
    

    【讨论】:

    • 简单明了的最佳答案。
    • 如果您使用的是 SqlServer 2005,则不会
    • @nalply 因为 SQL Server 2005 没有 date 数据类型
    【解决方案2】:

    一种方法是将getdate() 更改为您的列名,

    select dateadd(dd, datediff(dd, 0, getdate())+0, 0)
    

    【讨论】:

    • 我认为不需要 +0(至少使用 sql server 2012+)。这是我见过的最有创意和最有用的答案。
    【解决方案3】:

    这是另一个解决方案:

    SELECT CAST( FLOOR( CAST( GETDATE() AS float) ) AS smalldatetime)
    

    【讨论】:

      【解决方案4】:

      这是从日期时间获取日期(作为字符串)的简单方法:

      convert(varchar, <the date field/value/etc>, 101)
      

      但请注意,此字段的排序将按字母顺序而不是按日期,因为它现在是一个字符串

      【讨论】:

        【解决方案5】:

        是的。有很多格式可供选择,所以我将其链接起来。

        http://library.cirr.com/Microsoft/SQL-Server-v7/html/ca-co_1.htm

        如果您希望像您的帖子所暗示的那样将时间归零,您可以试试这个:

        select cast(convert(varchar, getdate(), 101) as datetime)
        

        【讨论】:

        【解决方案6】:

        我只是做 cast(getdate() as date)

        【讨论】:

          【解决方案7】:
          declare @CurrentDate datetime
          set @CurrentDate = dateadd(dd, datediff(dd, 0, getdate()), 0)
          

          --或--

          select dateadd(dd, datediff(dd, 0, MyDateColumn), 0) as DateOnly
          from tblX
          

          【讨论】:

            【解决方案8】:

            在我的搜索中,我遇到了以下解决方案,它仅从 UTC 时间中剔除时间,但我发现它很有趣,所以我认为其他人也会这样做:

            FUNCTION TrimDate(@dt AS DATETIME) RETURNS DATETIME
            BEGIN
                RETURN CAST(CAST((@dt - 0.500000038580247) AS INT) AS DATETIME) 
            END
            

            我认为它运行得很快,因为它所做的只是四舍五入和强制转换。

            【讨论】:

              猜你喜欢
              • 2018-12-11
              • 1970-01-01
              • 1970-01-01
              • 2017-06-29
              • 2011-10-24
              • 1970-01-01
              • 2013-02-24
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多