【发布时间】:2016-06-21 10:52:48
【问题描述】:
我有一个最初看起来很简单的日期格式要求,但事实证明这很痛苦。我使用的是 SQL Server 2012,但需要支持 2008。
查看参考 (https://msdn.microsoft.com/en-GB/library/ms187928.aspx) 我可以使用 CONVERT 将日期时间格式化为多种不同格式的字符串,但如果没有解决方法,我似乎无法获得 DD MM YYYY。是否有我在某处遗漏的未包含在该参考中的代码?
我可以看到的解决方法如下,但如果有一种合理的方法可以使用 T-SQL 来实现,我显然不热衷于使用这些方法。
SELECT REPLACE(CONVERT(varchar, GETDATE(), 103), '/',' ')
SELECT RIGHT('0' + CONVERT(varchar, DATEPART(dd, GETDATE())), 2) + ' ' + RIGHT('0' + CONVERT(varchar, DATEPART(mm, GETDATE())), 2) + ' ' + CONVERT(varchar, DATEPART(yyyy, GETDATE()))
在 cmets 之后,示例输入日期为 2016 年 6 月 21 日(年 = 2016,月 = 06,日 = 21),其所需输出为 2016 年 6 月 21 日。
【问题讨论】:
-
请向我们展示您的数据样本,以及您需要什么输出。
-
第一个有什么问题?
-
@RichBenner,除了它是 hacky 之外,没有什么特别的问题。试图确定是否有一个样式值可以与我缺少的 CONVERT 一起使用。
-
您要使用的日期格式不是“官方”格式(未在任何日期/时间相关标准中列出),SQL Server 没有内置格式来获取它。如果您使用的是 SQL Server 2012 或更高版本,请检查
FORMAT函数。 -
@ChrisDisley 当然,在 SQL 中这样做会很麻烦,我会尽可能在表示层中这样做。不过,我认为这将是您在 SQL 中执行此操作的最佳机会。
标签: sql-server tsql date datetime