这可能是最愚蠢的问题,但我有一列名为[开始时间]的列(日期时间,不为null),并以'2016-05-25 00:12:01.977'的形式输出数据
我想要的是将除“月份”和“年份”之外的所有内容都剪掉,然后将数据分组为几个月。我用的是
select format([Start Time],'MMM/yyyy') as [Month]
除了现在似乎不再是日期时间字段以及当我添加时,它的工作正常
order by format([Start Time],'MMM/yyyy')
它将月份按字母顺序排列,而不是Jan Feb等。我尝试使用
convert(date,format([Start Time],'MMM/yyyy'))
但这又带来了错误
消息241,级别16,状态1,行1从字符串转换日期和/或时间时,转换失败。
谁能告诉我在按月份进行格式化和分组时是否可以保留日期数据类型,如果可以,怎么办?
谢谢
在SQL Server中处理日期需要一些工作,但是您可以通过将日期首先更改为该月的1号,然后将其分组,然后最后对其进行格式化,来解决此问题,如下所示:
select
format(Month2,'MMM/yyyy') as Month,
amount
from
(
select
DATEADD(month, DATEDIFF(month, 0, [Start Time]), 0) as Month2,
sum(amount) as amount
from
yourtable
group by
DATEADD(month, DATEDIFF(month, 0, [Start Time]), 0)
) X
order by
Month2
格式也是相当繁重的操作,如果您有很多行,则应考虑使用convert或datepart。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句