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

时间:2019-02-28 20:10:56

标签: sql-server tsql

我收到了一个文件,我正在尝试通过将以前的表插入到新表中来清理数据。大多数列应具有“ Y”或“ N”,但某些单元格为空,我给它们提供了N值。运行查询时,从字符串转换日期和/或时间时,转换失败。上次活动的日期设置如下:8/23/2018 8:44:00 PM

这是我的表格:Email_Roster:

 [ID_NUM] [INT] IDENTITY(1,1) NOT NULL,
 [key] [VARCHAR](50) NOT NULL,
 [2017_SL2_s] [VARCHAR](50) NOT NULL,
 [2017_SL2_o] [VARCHAR](50) NOT NULL,
 [2017_SL2_c] [VARCHAR](50) NOT NULL,
 [2017_SL2_b] [VARCHAR](50) NOT NULL,
 [2017_SL2_u] [VARCHAR](50) NOT NULL,
 [last_activity_date] [datetime] NULL,
 [last_email] [VARCHAR](50) NULL,

这是我为替换空单元格而编写的查询,但是从字符串转换日期和/或时间时遇到失败错误。

INSERT INTO [dbo].[training] 
     (
       [2017_SL2_s]
      ,[2017_SL2_o]
      ,[2017_SL2_c]
      ,[2017_SL2_b]                        
      ,[2017_SL2_u]
      ,[last_activity_date]
      ,[last_email_date]
       )

    SELECT
        ISNULL ([2017_SL2_s], 'N') [2017_SL2_s],
        ISNULL ([2017_SL2_o], 'N') [2017_SL2_o],
        ISNULL ([2017_SL2_c], 'N') [2017_SL2_c],
        ISNULL ([2017_SL2_b], 'N') [2017_SL2_b],
        ISNULL ([2017_SL2_u], 'N')[2017_SL2_u],
        [last_activity_date], 
         [last_email]
        FROM [dbo].[Email_Roster]

1 个答案:

答案 0 :(得分:2)

您似乎收到的日期字符串不符合ANSI,因此您将不得不使用convert并将日期格式传递给它。 https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

这样的事情。

select convert(date, '8/23/2018 8:44:00 PM', 110)