5

我正在提取数据以在 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)
4

5 回答 5

7

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

于 2013-08-14T16:39:42.810 回答
2

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

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

于 2013-11-06T14:00:37.200 回答
1

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

例如,我有一个存在这个问题的表。我更改了查询以使用 Mike 的帖子

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

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

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

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

于 2015-12-17T20:27:05.333 回答
0

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

于 2014-06-05T07:48:52.970 回答
0

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

于 2019-01-25T18:22:01.483 回答