插入日期列并将其转换为不同的SQL Server表

插入日期列并将其转换为不同的SQL Server表,sql,sql-server,Sql,Sql Server,我的SQL Server数据库中有以下StagingTable: Date1 Date2 2020-10-19 04:00 20-10-18 16:42:32 它们都设置为varchar(max)列类型 我试图将它们发送到我的主表,该表设置为datetime2(7)列类型 我使用了以下代码: INSERT INTO [dbo].[Table] SELECT CONVERT(datetime2, [Date1]),

我的SQL Server数据库中有以下
StagingTable

     Date1               Date2
2020-10-19 04:00    20-10-18 16:42:32
它们都设置为
varchar(max)
列类型

我试图将它们发送到我的主
,该表设置为
datetime2(7)
列类型

我使用了以下代码:

INSERT INTO [dbo].[Table]
    SELECT 
        CONVERT(datetime2, [Date1]),
        CONVERT(datetime2, [Date2])
    FROM 
        [dbo].[StagingTable]
但是当我运行查询时,我得到以下错误:

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

有没有关于如何绕过这一点并有效地插入信息的想法?我以前做过这个,通常`转换函数是有效的。任何帮助都将不胜感激

试试这个机会

INSERT INTO [dbo].[Table]
SELECT convert(datetime2,[Date1],101)
  ,convert(datetime2,[Date2],2)

 FROM [dbo].[StagingTable]

嗯。您的第二个值有两位数的年份,这是一个问题。您可以尝试:

coalesce(try_convert(datetime2(7), date1),
         try_convert(datetime2(7), '20' + date1)
        ),
coalesce(try_convert(datetime2(7), date2),
         try_convert(datetime2(7), '20' + date2)
        )
据推测,两位数的年份可能出现在任一列中


是一个dbfiddle。

您的varchar日期应该是正确的格式。谢谢您的回复。可惜还是一样!我收集了一些与格式有关的东西,但只是不太确定如何绕过它!您能解释更多吗?原始数据来自python数据帧,它以
varchar(max)的形式进入
StagingTable
当我尝试运行您的脚本时,它给出了相同的错误
从字符串转换日期和/或时间时,转换失败。
对于您的示例,如果您有不同的数据,我不完全知道它的工作