【发布时间】:2019-06-30 06:59:41
【问题描述】:
我有一个 Excel 视图,它利用 SQL Server 连接到其数据库的数据。
提取的部分数据是日期,SQL 查询以 103 (dd/mm/yyyy) 格式请求该日期。
convert (varchar(11), [mytable].[myDate], 103)'my date'
如果我直接在 SQL Server 管理器中运行 SQL 代码,将其复制并直接粘贴到 Excel 中就可以了。
但是,一旦我将它作为 Excel 中的 SQL 数据连接运行,数据似乎会丢失其格式并变成文本字符串。 (请注意下图中的日期如何向左对齐)
我能找到的唯一解决方案是在 Excel 的“文本到列”中包含日期的列并将格式设置为 DMY。然而,这只是一个短期修复,因为每次刷新数据连接时,格式都会再次丢失。
Excel 中的外部数据属性设置为保留单元格格式。
除了编写一些 VBA 以在数据刷新时自动“文本到列”格式之外,任何人都有任何想法。
日期在底层数据库中存储为 dd/mm/yyyy hh:mm:ss,我需要以不同的格式将其提取为 103 吗?
谢谢大家。
【问题讨论】:
-
为什么不直接将数据请求为 dd/mm/yyyy hh:mm:ss 并使用单元格格式根据需要对其进行格式化。
-
正如萨尔曼所指出的,我还认为您应该只从数据库请求数据作为 DATETIME,而不是“看起来像日期的字符串” - excel 将知道如何处理日期、格式使用您喜欢的日期格式的列。不要使用数据库将数据从原生格式(int、date、float 等)转换为字符串,然后希望前端可以将其解析回原生进行处理;将其保持为原生并让前端以原生方式使用它
标签: sql sql-server excel