我总是发现SQL Server日期格式是反直觉的。我很确定我已经知道唯一的答案是使用大量的转换和字符串函数,但我想我会问以防万一。
如何让SQL Server将datetime
格式化为:
%Y-%m-%d %I:%M%P or '2012-04-05 11:56am'
我当前的方法涉及使用SELECT CONVERT(VARCHAR(19), GETDATE(), 120)
撤回数据,然后在代码中循环服务器/客户端。在将数据导出为CSV时,我发现在某些情况下效率低下。
答案 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.