【问题标题】:MS SQL Server Dates ExcelMS SQL Server 日期 Excel
【发布时间】:2013-10-25 04:20:36
【问题描述】:

我有从 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 行需要永远循环。有其他选择吗?

【问题讨论】:

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

标签: sql sql-server excel datetime odbc


【解决方案1】:

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

我已将数据转换为日期时间格式,现在似乎可以使用了。

【讨论】:

    【解决方案2】:

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

    "YYYY-MM-DD HH:mm:ss"

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

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

    CONVERT(VARCHAR(10), 列, 120)

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 2018-12-30
        • 1970-01-01
        • 2017-04-06
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多