【问题标题】:SQL datetime update time to 00:00:00 from all other time valuesSQL datetime 将所有其他时间值的时间更新为 00:00:00
【发布时间】:2013-10-24 09:50:56
【问题描述】:

有没有办法更新表中的所有列

2010-12-31 23:59:59.000

2010-12-31 00:00:00.000

这样的??

UPDATE t1
SET [Posting Date] = [Posting Date] with ms = 00:00:00.000
WHERE ms = other than 00:00:00.000
GO

【问题讨论】:

    标签: sql sql-server-2008 tsql datetime milliseconds


    【解决方案1】:
    UPDATE t1
    SET [Posting Date] = cast([Posting Date] as date)
    WHERE cast([Posting Date] as time) > '00:00'
    

    【讨论】:

    • i-one 的解决方案有效,但我询问了 where 条件。因此接受这个作为最终答案。
    【解决方案2】:
    UPDATE t1
    SET [Posting Date] = CAST([Posting Date] as DATE)
    

    【讨论】:

      【解决方案3】:

      这可能会对您有所帮助:

      UPDATE tableName SET ColumnName = CAST( CAST( NOW( ) AS DATE ) AS DATETIME );

      【讨论】:

        【解决方案4】:

        在 sq-server 中

        UPDATE [dbo].[1] SET  [datetime]= CAST([datetime] AS DATE) 
        
        select * from [dbo].[1]
        

        【讨论】:

        • 我没有正确检查问题 mybad,现在它是正确的!
        【解决方案5】:

        试试:

        MODIFIEDDATETIME-(cast(MODIFIEDDATETIME as time))
        

        【讨论】:

        • 数据类型 datetime 和 time 在减法运算符中不兼容。
        【解决方案6】:

        这对我有用:

        update t1 set [Posting Date]  = CONVERT(varchar,[Posting Date] , 112)
        

        但我认为这在很大程度上取决于您的数据库的语言环境是如何配置的,您可能需要使用其他样式(而不是 112,也许是 101 或 102...)请参阅 this link 以查看可能的转换样式并选择更适合您的那一款。

        如果您需要这样做一次,您可以将列类型更改为日期,保存然后返回日期时间,但如果表很大,这可能很耗时

        【讨论】:

        • 永远不要使用这个解决方案。您已经有一个日期时间,不要通过转换为 varchar 来滥用它
        • 我知道这是一个快速而肮脏的解决方案,但它从来没有给我带来任何问题
        猜你喜欢
        • 2011-06-27
        • 1970-01-01
        • 1970-01-01
        • 2013-07-23
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 2012-07-15
        • 1970-01-01
        相关资源
        最近更新 更多