小编典典

在mssql中需要格式为yyyy-mm的日期

sql

需要格式为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)

阅读 321

收藏
2021-04-28

共1个答案

小编典典

我认为最简单的方法如下:

CONVERT(VARCHAR(7), RH.updated_datetime, 126)

但是,我从来都不喜欢在应用程序层之前将日期转换为字符串,所以如果是我,我会将其保留为日期格式,但是使用以下命令将每个日期转换为每月的第一天:

DATEADD(MONTH, DATEDIFF(MONTH, 0, RH.updated_datetime), 0)

这意味着您的应用程序将列作为日期接收,并且可以将其作为日期进行操作,按日期进行排序等,然后,如果您确实想像显示它一样yyyy- mm,则可以在最后一分钟进行格式化。

2021-04-28