3

我一直发现 SQL Server 日期格式与直觉相反。我很确定我已经知道唯一的答案是使用大量的转换和字符串函数,但我想我会问以防万一。

如何让 SQL Server 将 a 格式化为datetime

%Y-%m-%d %I:%M%P or '2012-04-05 11:56am'

我目前的方法涉及用代码拉回数据,SELECT CONVERT(VARCHAR(19), GETDATE(), 120)然后在代码中循环服务器/客户端。在将数据导出到 CSV 时,我发现在某些情况下效率低下。

4

3 回答 3

2
select 
    cast(datepart(YYYY, GETDATE()) as varchar) + '-' +
    right('0' + cast(datepart(MM, GETDATE()) as varchar), 2) + '-' +
    right('0' + cast(datepart(DD, GETDATE()) as varchar), 2) + ' ' +
    LTRIM(RIGHT(cast(GETDATE() AS varchar), 8))
于 2012-04-05T17:43:59.143 回答
2
DECLARE @d AS datetime;
SET @d = '2012-04-04 16:43:00'
SELECT LEFT(CONVERT(VARCHAR, @d, 120), 11) 
       +  RIGHT('0' + LTRIM(SUBSTRING(CONVERT(VARCHAR, @d, 131), 12, 5)), 5) 
       + LOWER(RIGHT(CONVERT(VARCHAR, @d, 131), 2))
--2012-04-04 04:43pm
于 2012-04-05T17:45:58.547 回答
0

我认为真正的答案是“你不需要”,除非你将 SQL Server 实例升级到 SQL Server 2012。

格式化 (Transact-SQL)

于 2012-04-05T17:18:48.390 回答