【问题标题】:mysql stored procedure doesn't work for the last day of monthmysql存储过程在一个月的最后一天不起作用
【发布时间】:2014-03-03 15:03:49
【问题描述】:

我在 MySQL 数据库上。我有一个预定的事件,它每晚调用一个过程,并根据前一天在表中插入一些数据。 除了一个月的最后一天,一切正常。该过程提供一个空集。我也尝试在没有调度的情况下运行该过程,并且我也得到了一个空集。所以我认为程序本身(我如何定义“基准”又名日期 f.e.)有问题,而不是在日程安排中。有什么想法可以解决这个问题或做对吗?谢谢!

| data |          |

CREATE DEFINER=`developer`@`localhost` PROCEDURE `data`(p_start_date DATE, p_end_date DATE)
BEGIN
DECLARE datum DATE;

SET datum = p_start_date;

WHILE datum < p_end_date DO


INSERT INTO DB_name.table_name select ... where ... and a.entrydate>=datum - 1 and a.entrydate<datum group by date(a.entrydate);


SET datum = DATE_ADD(datum, INTERVAL 1 DAY);

END WHILE;


END | utf8                 | utf8_general_ci      | utf8_general_ci    |

【问题讨论】:

    标签: mysql stored-procedures scheduled-tasks procedure


    【解决方案1】:

    a.entrydate&gt;=datum - 1?由于datum 是一个日期,因此您最终会得到该结果的浮点数,例如select now()-120140303090955.0000 的形式返回。

    也许你想要

    ... where ... and a.entrydate >= (datum - INTERVAL 1 DAY)
    

    改为。

    【讨论】:

    • 嗨,Marc,我按照您的建议进行了更改,并再次运行了该程序。它确实返回了 2 月 28 日丢失的一些结果。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-08-22
    • 2014-05-02
    • 2021-12-24
    • 2010-09-18
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多