【问题标题】:Convert a varchar variable to a datetime variable将 varchar 变量转换为 datetime 变量
【发布时间】:2016-07-04 07:13:49
【问题描述】:

我有一个包含几列的数据。其中之一 (Col1) 是 varchar 变量。

我将给出几个值的示例:

 Col1:
 '2013-01-01 00:00:00:000'
 NULL
'2013-01-01 00:00:00:000'

我正在尝试将数据类型从 varchar 变量更改为 datetime 变量的设计,这会引发错误:

 "Unable to modify table. conversion failed when converting date and/or time from a character string". 

有什么建议可以解决这个问题吗?

【问题讨论】:

  • 向我们展示您的尝试
  • 你一定有坏数据
  • 也许这样的事情可以帮助你:SELECT CONVERT(datetime, '2013-01-01 00:00:00:000')
  • 你试过this吗?

标签: sql-server sql-server-2008 datetime varchar


【解决方案1】:

您必须将 varchar 转换为日期时间。您可以使用 cast 或 convert 功能。您应该将日期值以适当的格式存储在 varchar 列中。

我假设您使用的是 SQL Server 2012。

这样试试,

DECLARE @d TABLE (col1 VARCHAR(50))

INSERT INTO @d
VALUES ('2013-01-01 00:00:00:000')
    ,(NULL)
    ,('2013-01-01 00:00:00:000')

SELECT convert(DATETIME, Col1) AS DATE

如果上述查询返回错误,那么您可以使用 try_convert 函数。 (这将忽略您的错误格式数据)注意:您应该对您的错误数据采取必要的措施。

SELECT try_convert(DATETIME, Col1) AS DATE
FROM @d
FROM @d

【讨论】:

    【解决方案2】:

    您可以使用ISDATE() 过滤日期列,只需使用CAST 列。

    在 MSDN 中它描述为

    如果表达式是有效的日期、时间或日期时间值,则返回 1;否则为 0。

    使用给定数据的示例执行:

    DECLARE @TestTable TABLE (Col1 VARCHAR(50))
    
    INSERT INTO @TestTable (Col1) VALUES 
    ('2013-01-01 00:00:00:000'),
    (NULL),
    ('2013-01-01 00:00:00:000');
    
    SELECT CAST(Col1 AS DATETIME)
    FROM @TestTable
    WHERE ISDATE(Col1) = 1
    

    输出:

    Col1
    ------------------------
    2013-01-01 00:00:00:000
    2013-01-01 00:00:00:000
    

    【讨论】:

      【解决方案3】:

      您好@Jordan1200,如上所述,以下应该是一个快速简单的修复方法;

      CAST(Col1 AS DATETIME) AS Col1
      

      【讨论】:

      • 编辑 - 我修好了。 { 它不断地向我抛出错误。我注意到数据不会将 null 识别为“NULL”或“”,并且我不能仅提取 col1 中的 null 值。有人知道为什么吗?}
      • 这似乎很奇怪@Jordan1200。我刚刚查看了一些我在其中执行 ETL 的中间视图,并且肯定有以前数据类型为“varchar (120)”的列,我继续将其转换为“DATE”。同一列也肯定包含 Null 值。抱歉,我不能再立即提供帮助。我会考虑的。
      猜你喜欢
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2020-02-03
      • 2021-03-16
      • 2018-09-12
      • 2013-04-25
      • 2018-09-14
      • 2020-01-24
      相关资源
      最近更新 更多