需要格式为yyyy-mm的日期,并且应该分组以获取计数,但是当我给
group by date is says invalid
我找到了这个解决方案
任何人都可以通过提供其他解决方案来帮助我
select count(*) as count, Convert(char(10), RH.updated_datetime, 105) as date, SUM( datediff(SECOND, PRI.procedure_performed_datetime ,RH.updated_datetime ) )/count(*) as average_reporting_tat from report R, report_history RH, study S, procedure_runtime_information PRI, priorities PP, patient P, "procedure" PR where RH.report_fk=R.pk and RH.pk IN ( select pk from ( select * from report_history where report_fk=r.pk ) as result where old_status_fk IN (21, 27) ) AND R.study_fk = S.pk AND S.procedure_runtime_fk = PRI.pk AND PRI.procedure_fk = PR.pk AND S.priority_fk = PP.pk AND PRI.patient_fk = P.pk AND RH.updated_datetime >= '2012-05-01' AND RH.updated_datetime <= '2013-09-12' group by Convert(char(10), RH.updated_datetime, 105)
我认为最简单的方法如下:
CONVERT(VARCHAR(7), RH.updated_datetime, 126)
但是,我从来都不喜欢在应用程序层之前将日期转换为字符串,所以如果是我,我会将其保留为日期格式,但是使用以下命令将每个日期转换为每月的第一天:
DATEADD(MONTH, DATEDIFF(MONTH, 0, RH.updated_datetime), 0)
这意味着您的应用程序将列作为日期接收,并且可以将其作为日期进行操作,按日期进行排序等,然后,如果您确实想像显示它一样yyyy- mm,则可以在最后一分钟进行格式化。
yyyy- mm