将数据导入数据库的问题

时间:2014-10-20 04:57:36

标签: sql sql-server excel sql-server-2008

在excel文件中有两列:名称和时间

当我想在默认情况下导入数据库时​​,它将时间列作为varchar类型。

导入excel后,它没有转换为日期格式。

     select distinct cast([time] as datetime) FROM [table1]

显示错误

 Conversion failed when converting date and/or time from character string 

在时间列中,值类似于9/26/2014,导入后在数据库中插入41908

解决方案是什么?

N.B:excel中的Time列中有Null值。在导入之前,我手动将时间单元格格式化为日期格式,但仍然无效。

2 个答案:

答案 0 :(得分:0)

始终可以确保使用

设置日期格式
SET DATEFORMAT mdy;

以防日期格式为其他格式

但你必须处理Null值,所以我建议检查该值是否为null,如果是,则不做任何事,但如果没有,则转换为日期......

像这样。

SET DATEFORMAT mdy;
select distinct case when [time] is null then 0 else cast([time] as datetime) end case from [table1]

你总是可以将de cero(0)重新设置为你想要的任何东西。

答案 1 :(得分:0)

你需要检查两件事, 首先,检查SQL表中的列数据类型,无论是Datetime还是varchar。 其次,检查您的Excel列是否格式化为日期。

现在,在SQL表中插入日期列

检查以下步骤:

1)使用公式,=文本(A1,“dd / mm / yyyy”)作为日期列的Excel。 DO COPY PASTE SPECIAL在导入数据之前从列中删除公式。

2)

SET DATEFORMAT DMY
select distinct Cast(Cast([time] as varchar(11)) as Datetime) FROM [table1]

注意:如果是NULL,excel中的值是显示文本“NULL”的日期列,还是为空?