进行日期转换

时间:2014-02-25 20:23:30

标签: sql tsql

我不是那么强大的日期转换。由于时间戳,我确信我正在丢失记录。我需要在此查询中转换我的日期,以便我可以得到一个滚动的季度和日期总和。任何帮助将非常感谢,并提前感谢。

SELECT   
     a.UserID_Caller ,a.csCallType,timewait,a.convotime,datename(quarter,timewait)as qrt,datename(year,timewait)as yr,datename(month,timewait)as mnth,datename(day,timewait)as dy
        --sum(case when datename(year,timewait) = (datename(year,getdate()-1)) AND (datename(Quarter,timewait))=(datename(Quarter,getdate()-1)) and (datename(day,timewait))<>(datename(day,getdate()))then (a.convotime)/60 else 0 end) as [MTD]
FROM  satVRS.dbo.rptNECACallHistory as a
WHERE 
        a.IsReport = 1 
    -AND (datename(year,timewait))=(datename(year,getdate()-1)) AND (datename(quarter,timewait))=(datename(quarter,getdate()-1))  and (datename(day,timewait))<>(datename(day,getdate()))
     and month(timewait)     
    AND a.convotime > 0
    AND a.NECA_isReport = 1        
    AND a.Video in ('SV')

GROUP BY a.UserID_Caller ,a.csCallType,timewait,a.convotime
order by timewait,a.UserID_Caller

1 个答案:

答案 0 :(得分:0)

我假设您要查询调用列表为MTD,QTD和YTD

我注意到你从getdate()减去1 ...   通常,当您查找MTD,QTD或YTD时,它将与当前的月季度或年度相关。在所有情况下都是到本年度。因此,例如,如果您正在寻找2014年1月1日的MTD,这将仅包括2014年1/1的呼叫。如果您正在寻找2014年3月1日的QTD,那将包括1/1 - 3 /在2014年1,您可以看到这不是在当前日期之前3个月。最后,如果您正在寻找2014年10月1日的年初至今,您将在2014年寻找所有电话。

所以对于MTD你的WHERE子句看起来像......

where 
    month(datefield) = month(getdate())
    and year(datefield) = year(getdate())

对于QTD你的WHERE子句看起来像......

where
    datename(QUARTER,datefield) = datename(QUARTER,getdate()
    and year(datefield) = year(getdate())

最后对于YTD你的WHERE子句看起来像......

where
   year(datefield) = year(getdate())

我希望有所帮助。