【问题标题】:SQL Date formatting for Excel pivot tablesExcel 数据透视表的 SQL 日期格式
【发布时间】:2013-08-02 13:19:02
【问题描述】:

我正在提取数据以在 Excel 中的数据透视表中使用,但 Excel 无法识别日期格式。

我正在使用..

CONVERT(date, [DateTimeSelected]) AS [Search Date]

在我的查询输出中显示为 2013-08-01

当它通过我的 SQL 连接进入我的 Excel 数据透视表时,它看起来相同,但过滤器无法识别为日期。

在这里,您可以看到 Excel 如何在左侧将其视为文本,在右侧将其视为 Excel 中将其识别为日期时的外观。

有什么想法吗?

谢谢 ;-)

尝试了所有这些,但只有原始 B.Depart(日期时间)作为日期出现,Excel 不会将转换后的列作为日期读取...

我得到了很多格式,但 Excel 一定不喜欢转换后的日期??

 B.Depart AS 'Holiday Date time',
 CONVERT(VARCHAR(10), B.Depart,103) AS 'Holiday Date',
 DATENAME(weekday, B.Depart) AS 'Holiday Day Name',
 CONVERT(CHAR(2), B.Depart, 113) AS 'Holiday Day',
 CONVERT(CHAR(4), B.Depart, 100) AS 'Holiday Month',
 CONVERT(CHAR(4), B.Depart, 120) AS 'Holiday Year',
 CONVERT(VARCHAR(10),B.Depart,10) AS 'New date',
 CONVERT(VARCHAR(19),B.Depart),
 CONVERT(VARCHAR(10),B.Depart,10),
 CONVERT(VARCHAR(10),B.Depart,110),
 CONVERT(VARCHAR(11),B.Depart,6),
 CONVERT(VARCHAR(11),B.Depart,106),
 CONVERT(VARCHAR(24),B.Depart,113)

【问题讨论】:

  • 我在这里尝试了所有的日期,但除了原始的 B.Depart(日期时间)之外,所有日期都被 Excel 读取为文本,并在使用 SQL 连接拉出时按过滤器排序 alpha。

标签: sql excel date pivot pivot-table


【解决方案1】:

需要注意的是,如果日期首先被识别为文本,然后您将查询更改为建议之一,您必须告诉 Excel 不要保留旧的文本格式数据透视表缓存中的值(默认情况下,数据透视表在后台缓存中的每个字段中保留“旧”值,即使它们不在当前返回的数据中)。否则,由于第一个值仍在缓存中(即使它们不再在实时数据中),整个字段都会被识别为文本。

例如,我有一个存在此问题的表。我将查询更改为使用 Mike 的

帖子

cast(convert(char(11), Bo.Depart, 113) as datetime)

,但它实际上并没有导致 Excel 将其识别为日期,直到我重置保留在数据透视表缓存中的项目之后。

要更改数据透视表在缓存中保留项目的方式, 1.右键单击表格 2.选择“数据透视表选项” 3. 在“数据”选项卡上,将“每个字段要保留的项目数”的下拉菜单更改为“无”。

当您的切片器按钮显示数据集中不再存在的值时,这也很有用。

【讨论】:

    【解决方案2】:

    似乎cast(convert(char(11), Bo.Depart, 113) as datetime) 有效..

    【讨论】:

    • 应用后,我发现我可以更改数据透视表的日期格式,但不能更改数据透视图。即使“链接到源”也不会通过任何格式更改进行任何更改。要在应用此解决方案后重新格式化轴上的日期,您必须通过 数据透视图字段 > 字段设置 > 数字格式。此处对格式的任何更改都会更改您的日期轴标签格式。
    【解决方案3】:

    我发现对我来说唯一的答案是将 SQL 数据设置为表的源,而不是数据透视表,然后从该表构建数据透视表。

    那是我能够将数字格式应用于数据透视表行标签,这使我可以在图表上按照我想要的方式设置日期。

    【讨论】:

      【解决方案4】:

      我在使用 Excel 2010 时遇到了同样的问题。 我的解决方案是将 SQL Server 的连接类型指定为“SQL Server Native Client 10.0”而不是“SQL Server”(可在数据连接指南中的高级/其他选择中获得)。使用它可以很好地连接到包含标准日期格式列的 sql server 表。

      【讨论】:

        【解决方案5】:

        您可以在 SQL 表中使用SmallDatetime 格式并且可以正常工作。永远不要将日期转换为 varchar。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-04-23
          • 2015-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-13
          相关资源
          最近更新 更多