使用SQL Server格式的日期为'%Y-%m-%d%I:%M%P' /' 2012-04-05 11:56 am'

时间:2012-04-05 17:10:48

标签: sql sql-server formatting

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

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

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

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

3 个答案:

答案 0 :(得分: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))

答案 1 :(得分: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

答案 2 :(得分:0)

我认为真正的答案是“你没有”,除非你将SQL Server实例升级到SQL Server 2012.

FORMAT (Transact-SQL)