MS SQL Server日期Excel

MS SQL Server日期Excel,sql,sql-server,excel,datetime,odbc,Sql,Sql Server,Excel,Datetime,Odbc,我有数据,这些数据从SQL Server链接到excel文档中。SQL Server上的列格式为datetime2 当我通过ODBC连接获取数据时,它会以字符串的形式出现 我试着用 CAST(column AS DATE ) 但那没用 我试着通过 CONVERT(VARCHAR(10), column, 103) 也一样,但那不起作用 我也尝试通过Microsoft query检索数据,但没有成功 目前我使用的VBA代码如下: While (ActiveCell.Value <&g

我有数据,这些数据从SQL Server链接到excel文档中。SQL Server上的列格式为
datetime2

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

我试着用

CAST(column AS DATE ) 
但那没用

我试着通过

CONVERT(VARCHAR(10), column, 103) 
也一样,但那不起作用

我也尝试通过Microsoft query检索数据,但没有成功

目前我使用的VBA代码如下:

While (ActiveCell.Value <> "")
  ActiveCell.Value = DATEVALUE(ActiveCell.Value)
  ActiveCell.Offset(1,0).Activate
Wend
While(ActiveCell.Value“”)
ActiveCell.Value=DATEVALUE(ActiveCell.Value)
ActiveCell.Offset(1,0).激活
温德

循环遍历需要这种处理的每一列,但在多个列中循环100000行需要花费很长时间。有其他选择吗?

不需要宏,而是使用us Excel表格列

Excel中的任何ODBC连接都会返回一个表。 只需在计算表的右侧添加一个新列。 应该是这样的 =日期值([@DateColumnFromODBC])


只要ODBC连接保持不变,列将随表一起添加和收缩,并始终保留其引用。

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


我已将数据转换为datetime格式,现在似乎正在工作。

您只需将Excel中的日期转换为以下格式即可:

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

这是最新的。在这种情况下,将进行隐式转换并获得正确的结果

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

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

你可能会发现这很有帮助。如果您坚持使用当前方法,请确保在循环之前设置了
screenUpdate=False