需要将sql server查询转换为mysql查询

时间:2014-08-13 12:58:10

标签: mysql sql sql-server database group-by

我需要将以下sql server查询转换为mysql

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, p_date)) [date],
       SUM(p_amount) [sum]
FROM tbl_Payments
WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, p_date)) BETWEEN '20130701' AND '20130731'
GROUP BY DATEADD(dd, 0, DATEDIFF(dd, 0, p_date))

列名:p_date,p_amount

1 个答案:

答案 0 :(得分:0)

您的查询看起来正确,除了

之类的内容
  1. 用反引号替换[]"`"逃避

  2. DATE和TIME函数语法在MySQL中与SQL Server不同。有关MySQL DATE和TIME函数的更多信息,请参阅Date and Time Functions

  3. 尝试使用1-1-1之类的最短日期,而不是0

    select DATEDIFF('1-1-1', now())

    select DATE_ADD('1-1-1', interval DATEDIFF(now(), '1-1-1') day);

  4. 有了这一切,下面的查询在MySQL中应该可以正常工作

    SELECT DATE_ADD('1-1-1', interval DATEDIFF(p_date, '1-1-1') day) `date`,
             SUM(p_amount) `sum`
             FROM tbl_Payments
             WHERE DATE_ADD('1-1-1', interval DATEDIFF(p_date, '1-1-1') day)
             BETWEEN '20130701' AND '20130731'
            GROUP BY DATE_ADD('1-1-1', interval DATEDIFF(p_date, '1-1-1') day)