2013-12-21 1 views
1

다음 MS-SQL Server 쿼리를 MySQL로 변환하고 있으며이 부분에서 멈추었습니다. 누구든지 내가 여기서 뭘 잘못하고 있는지 말해 줄 수 있니?MS-SQL Server 쿼리에서 MySQL 및 DATEDIFF()로 변환

기존 MS-SQL 쿼리 (작동하지 않음) (작업)

select top 4 
    [Mon]=sum(case when datename(weekday, vrdate) = 'Monday' then namount else 0 end), 
    [Tue]=sum(case when datename(weekday, vrdate) = 'Tuesday' then namount else 0 end), 
    [Wed]=sum(case when datename(weekday, vrdate) = 'Wednesday' then namount else 0 end), 
    [Thu]=sum(case when datename(weekday, vrdate) = 'Thursday' then namount else 0 end), 
    [Fri]=sum(case when datename(weekday, vrdate) = 'Friday' then namount else 0 end), 
    [Sat]=sum(case when datename(weekday, vrdate) = 'Saturday' then namount else 0 end), 
    [Sun]=sum(case when datename(weekday, vrdate) = 'Sunday' then namount else 0 end) 
from stockmain 
where etype = 'sale' and DATEDIFF(MONTH, vrdate, getDate()) = 0 
group by datepart(week, vrdate) 
order by datepart(week, vrdate) ; 

각각의 MySQL의 쿼리 아래

는 각각의 MySQL의 쿼리 내가 WHERE 절에 DATEDIFF에 붙어 .

select 
     sum(case when date_format(vrdate, '%W') = 'Monday' then namount else 0 end) as 'Mon', 
     sum(case when date_format(vrdate, '%W') = 'Tuesday' then namount else 0 end) as 'Tue', 
     sum(case when date_format(vrdate, '%W') = 'Wednesday' then namount else 0 end) as 'Wed', 
     sum(case when date_format(vrdate, '%W') = 'Thursday' then namount else 0 end) as 'Thu', 
     sum(case when date_format(vrdate, '%W') = 'Friday' then namount else 0 end) as 'Fri', 
     sum(case when date_format(vrdate, '%W') = 'Saturday' then namount else 0 end) as 'Sat', 
     sum(case when date_format(vrdate, '%W') = 'Sunday' then namount else 0 end) as 'Sun' 
from stockmain 
where etype = 'sale' and DATEDIFF(MONTH, vrdate, CURDATE()) = 0 
group by WEEK(VRDATE) 
order by WEEK(VRDATE) desc 
LIMIT 4 

답변

3

SQL Server의 datediff 작품 timestampdiff 방법의 MySQL의 상당.

WHERE TIMESTAMPDIFF(month, vrdate, curdate()) = 0 

다음 달의 계산 전에 어떻게 datediff 라운드에 따라 해당 될 수있다 :

WHERE MONTH(vrdate) = MONTH(CURDATE()) 
+0

1. 동등한 것을 주셔서 감사합니다 :-) –

+0

저는 그것이 실제로 동등한 것인지 숙고하고있었습니다. 저는 생각하지 않습니다.하지만 테스트 할 소프트웨어가 없습니다. 'timestampdiff'는 잘 동작 할 것입니다. –

+0

둘 다 같은 결과를 산출했습니다. 나는 두 번째 것과 갈거야. –