在查询结果中格式化日期

时间:2015-11-19 18:37:30

标签: sql-server date

我试图从特定格式的查询中获取结果,我似乎无法找到答案。

这是我的代码:

SELECT convert(date, TimeReported, 101) as 'Error Date', count(ErrorDetails) as 'Error Count' 

FROM ErrorLog

where ErrorDetails like '%login failed%' 

GROUP BY Convert(date, TimeReported, 101) 

order by 'Error Date' desc

我希望日期结果显示为mm / dd / yyyy

Error Date  Error Count:
11/12/2015  1
11/05/2015  3
03/24/2015  4

上面的代码给出了我的结果:yyyy / mm / dd

Error Date  Error Count
2015-11-12  1
2015-11-05  3
2015-03-24  4

3 个答案:

答案 0 :(得分:0)

试试这个:

 ;with cte as
(
SELECT convert(varchar(10), TimeReported, 101) as 'Error Date', count(ErrorDetails) as 'Error Count' 
FROM ErrorLog
where ErrorDetails like '%login failed%' 
GROUP BY convert(varchar(10), TimeReported, 101) 
)

select * 
from cte
order by YEAR(CONVERT(date,[Error Date])) desc,  [Error Count] asc

https://msdn.microsoft.com/en-ca/library/ms187928.aspx

答案 1 :(得分:0)

您可以在查询中尝试以下内容:

convert(nvarchar(10), TimeReported, 103)

答案 2 :(得分:0)

如果您使用的是SQL 2012或更高版本,则可以使用更丰富的格式化数据,包括日期。使用新的Format功能。 https://msdn.microsoft.com/en-us/library/hh213505(v=sql.110).aspx

使用此功能,您可以使用任何.NET格式说明符,单字母版本(标准)或自定义格式化程序。所以,而不是 convert(date, TimeReported, 101) as 'Error Date',您可以使用format(date, 'MM/dd/yyyy') as 'Error Date'。是的,它区分大小写。如果您使用" mm"而不是" MM",你会得到分钟。