我收到了一个文件,我正在尝试通过将以前的表插入到新表中来清理数据。大多数列应具有“ 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]
答案 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)