2012-11-19 72 views
4

我是从Excel导入数据并插入到sql表中。我的Excel文件中的一个域填充了一个时间值。我想将该时间值作为字符串导入到我的sql表中。当我这样做时,我在我的sql表中得到一个奇怪的值。 Excel的值是:07:00并将其作为字符串插入到sql表中后,时间值如下所示:0,29166666667从excel导入数据并插入到sql表中

将其作为字符串值导入的原因是您必须能够在同一字段中定义天数。像这样:D2 10:30。当我导入这种值时,它被正确插入。

任何人都可以帮忙吗?

+0

请注意这里。你可能会在Excel的屏幕上看到'07:00',但这只是格式。你到底该如何选择这个值插入到SQL中?我敢打赌,你正在使用VBA并获取该范围的价值?如果是这样,调试你的代码,并在你选择了一个VBA变量的值后立即停止,然后看看你真正插入到SQL中的内容。 – MatBailie

回答

3

Excel将日期和时间存储为从0到0.99999999 + x天的数值。

0.29166666667会像00.01.1900 07:00:00,这似乎是正确的在你的情况。

因此,在将其用作直接字符串输入之前,您必须使用该值的一些重新格式化或转换。

在VBA中,您可以使用Format(myValue,"DD-MM-YYYY hh:mm:ss")

等效工作表函数将为TEXT(A1,"DD-MM-YYYY hh:mm:ss")

格式代码取决于您的区域设置。如果你偏好使用excel定义的时间格式,你可能想尝试像这样的Format(myTime, "Long Time")

因为您没有发布任何代码,所以我不确定您是如何导入excel数据的。但是我想说,获得更好结果的最快方法是设置一个新列,使用TEXT公式以及前一个时间列的引用,并使用这个新的格式化列作为sql-db的输入。

+0

谢谢你的回答。 Excel文件会自动生成,因此我无法创建TEXT字段作为对时间字段的引用。林进口使用OleDBConnection,OleDBCommand和一个SQL字符串。 – Lahib