【发布时间】:2018-08-24 13:25:54
【问题描述】:
请帮忙,这几个月来一直让我发疯。
我正在查询一个 MS SQL 数据库中的数据,该数据库的结构不是很好,而且有很多挑战。到目前为止,让我感到困惑的一个特殊挑战是以用户容易理解并被 Excel 识别为日期(而不是文本)的格式显示日期
首先,此数据库中的日期存储为 'yyyymmdd' varchar(8)。我想转换为 dd/mm/yyyy(英国格式)。我已经使用许多不同的功能实现了这一点,如下所示......
FORMAT(CAST(20180728 as date, 'dd/MM/yyyy')
CONVERT(date,20180728,120)
SUBSTRING(20180728,7,2) + '/' + SUBSTRING(20180728,5,2) + '/' + SUBSTRING(20180728,1,4)
所有这些都提供了所需的结果,但在 Excel 中查看时,它们被视为文本,因此按范围过滤成为一项挑战。
然后我发现以下函数被 Excel 识别为日期但不是用户友好的显示...
CONVERT(smalldatetime, 20180728, 103)
这将返回格式为 2018-07-28 00:00:00,尽管在我访问过的所有网站上都读到代码 103 应该以英国格式返回。
我很感激,一旦数据在 excel 中,它可以重新格式化,但我试图避免这种情况并直接输入到 Excel 中,而无需进一步的用户干预。
希望有好的答案
【问题讨论】:
-
smalldatetime(和其他日期时间类型)没有有格式。您尝试将 string 转换为smalldatetime并告诉它(通过 103)string 已格式化为英国日期时间。你不正确,但它还是成功地进行了转换。 -
谢谢@DTU,你说我不正确,你对正确的方法有什么建议吗?
标签: sql-server excel date