1

我有从 SQL Server 链接到 Excel 文档的数据。SQL Server 上的列格式是datetime2.

当我通过 ODBC 连接获取数据时,它会以字符串形式出现吗?

我尝试使用

CAST(column AS DATE ) 

但这没有用。

我尝试通过重新格式化

CONVERT(VARCHAR(10), column, 103) 

也一样,但这没有用。

我也尝试通过 Microsoft 查询检索数据,但没有奏效。

目前我正在使用 VBA 代码,例如:

While (ActiveCell.Value <> "")
  ActiveCell.Value = DATEVALUE(ActiveCell.Value)
  ActiveCell.Offset(1,0).Activate
Wend

并循环遍历需要这种处理的每一列,但多列中的 100000 行需要永远循环。有没有其他选择?

4

3 回答 3

2

Excel 和 Access 似乎也不喜欢 SQL Server datetime2 格式。

我已将数据转换为日期时间格式,现在似乎可以正常工作。

于 2013-10-29T09:09:30.977 回答
1

您可以简单地将 Excel 中的日期转换为以下格式:

“YYYY-MM-DD HH:mm:ss”

这是默认的 ODBC 规范格式。在这种情况下,将进行隐式转换并获得正确的结果。

另一种方法是尝试使用另一种样式执行转换:

转换(VARCHAR(10),列,120)

于 2013-10-29T09:51:36.357 回答
0

不需要 MACRO,而是使用 Excel 表格列。

Excel 中的任何 ODBC 连接都会返回一个表。只需在表格右侧添加一个带有计算的新列。它应该看起来像这样 =DATEVALUE([@DateColumnFromODBC])

只要 ODBC 连接保持不变,该列就会随您的表添加和缩小,并且始终保留它的引用。

于 2013-10-25T07:20:22.587 回答