Mysql 如何修复日期函数的SQL查询?

Mysql 如何修复日期函数的SQL查询?,mysql,function,Mysql,Function,我已经为每月状态报告编写了以下SQL函数。但是我收到了从9月30日到10月30日的报告。我要10月1日至10月31日的结果。必须做哪些改变 我使用了以下datediff函数 SELECT DISTINCT d.reports_to_name AS “Manager Name:Data:190”, d.employee_name AS “Employee Name:Data:150”, d.date AS “DSR Date:Date:120”, (CASE

我已经为每月状态报告编写了以下SQL函数。但是我收到了从9月30日到10月30日的报告。我要10月1日至10月31日的结果。必须做哪些改变

我使用了以下
datediff
函数

SELECT DISTINCT
    d.reports_to_name AS “Manager Name:Data:190”,
    d.employee_name AS “Employee Name:Data:150”,
    d.date AS “DSR Date:Date:120”,
    (CASE 
        WHEN d.holiday = 1 THEN ‘Holiday’ 
        WHEN d.dsr_pause = 1 THEN ‘On Leave’ 
        WHEN d.dsr_created_on IS NULL THEN ‘Missed DSR’ 
        WHEN d.date = d.dsr_created_on THEN ‘On Time’ 
        ELSE ‘Delayed’ 
     END) AS ‘DSR Details:Data:120’,
    DATEDIFF(d.dsr_created_on,d.date) AS “Delayed By:Data:100”,
    d.todays_tasks AS ‘Tasks List:Text:500’
FROM
    tabCalendar DSR AS d
WHERE
    DATEDIFF(NOW(), d.date) BETWEEN 1 AND 31
ORDER BY 
    d.reports_to_name, d.employee_name, d.date ASC

我希望结果是从10月1日到10月31日或任何月份的1日到31/30。

只需更改where子句,这将返回从本月1日到最后一日的数据

WHERE d.date 
BETWEEN DATE_SUB(LAST_DAY(NOW()),INTERVAL DAY(LAST_DAY(NOW()))-1 DAY) 
AND LAST_DAY(NOW())
如果您的日期格式为“dd/mm/yyyy”,则可以使用以下查询

WHERE d.date
DATE_FORMAT(DATE_SUB(LAST_DAY(NOW()),INTERVAL DAY(LAST_DAY(NOW()))-1 DAY),"%d/%l/%Y")
AND DATE_FORMAT(LAST_DAY(NOW()), "%d/%l/%Y")

@AshutoshHalape如果此答案正确,则将其标记为正确答案。让我从我的团队领导处确认。它不会给我预期的结果。任务列表列为空。即使对于2019年11月1日的DSR日期列,它也会给我DSR详细信息,因为我之前的查询显示了DSR详细信息中的记录,并且我能够获取任务列表列的记录。@AshutoshHalape我已经更新了我的答案。请检查此项。穆罕默德·阿齐姆(Muhammad Azim)告诉我以下错误:类型错误:%d格式:需要数字,而不是数字