从字符串SQL 17.1转换日期和/或时间时转换失败

时间:2017-07-31 12:29:08

标签: sql sql-server

我需要一些帮助,如果可能的话,我试图更新[Created On]和[Modified On],我已尝试过多种方式通过SOF(在这里)这样做。

USE [DBName]
SET [Created On] = '2017-07-27  10:13:00',[Modified On] = '2017-07-27  10:19:00'
WHERE [Contract] = 'xxxxxxxxxxxxxxxx'
GO

两列设置为(nvarchar(255),null - 但是,它们现在已更改为(datetime,null) - 两种方式都给了我相同的错误。知道我知道这两列有日期和时间数据这是不同的,我无法进入并纠正它,因为它已经像这样被移交给我。前一个人知道如何操纵数据,因为我的生活我不能!

我反复收到以下错误,我感到茫然。

  

消息241,级别16,状态1,行4转换时转换失败   字符串的日期和/或时间。

我使用SQL Server Management Studio v17.1作为管理员。

如果可能,有人可以引导我朝正确的方向前进吗?

提前致谢!

3 个答案:

答案 0 :(得分:1)

使用ISO 8601日期

cmd-t

为什么呢?隐含的DATEFORMAT按语言设置

USE [DBName]
SET [Created On] = '20170727 10:13:00',[Modified On] = '20170727 10:19:00'
WHERE [Contract] = 'xxxxxxxxxxxxxxxx'
GO

答案 1 :(得分:0)

您是否使用过UPDATE声明?

UPDATE t
    SET [Created On] = '2017-07-27 10:13:00',
        [Modified On] = '2017-07-27 10:19:00'
    WHERE [Contract] = 'xxxxxxxxxxxxxxxx';

注意:这也用一个空格替换双空格。如果您对上述问题有疑问,则datetime常量的正式定义使用“T”而不是空格。

答案 2 :(得分:0)

            UPDATE t 
            SET    Cast([CreatedOn] AS  DATETIME) = '2017-07-31  08:05:00', 
                cast([ModifiedOn] AS datetime) = '2017-07-31  15:25:00' 
            FROM   tablename t 
            WHERE  [Contract] = 'xxxxxxxxxxxxxxxx'