mysql時間操作函數和預存程序,mysql函數預存程序

來源:互聯網
上載者:User

mysql時間操作函數和預存程序,mysql函數預存程序

由於業務需要統計一批資料,用到關於mysql的時間操作函數和預存程序,問題已經基本解決,把過程記錄下:

1. mysql的語句中不支援直接用迴圈,迴圈只能在預存程序中使用;

2. 寫為檔案時,注意一些隱藏的字元,造成語法錯誤。本例中注釋中包含一些不可見字元,沒有找到。

3. 預存程序中盡量多使用分好,分割開語句。本例中 drop一句最初沒有寫,導致一直有錯。

4. 時間函數很強大,可以避免一些工作。http://www.cnblogs.com/ggjucheng/p/3352280.html

5. sql語句的最佳化很重要,本例中僅解決了問題,但資料量太大,預存程序運行了很久。期待有人能幫忙最佳化while語句中的最佳化。

下面貼代碼了:

--*將表test.transport20140901表中的資料按照每五分鐘一個間隔,統計各個路口的車流數量r--*@start_time 起始時間 是整點時間的五分鐘間隔 如 2014-09-01 00:20:00--*@end_time  終止時間  是整點的五分鐘間隔且大於start_time  如 2014-09-01 01:00:00--*統計範圍包含起始時間,但不包含終止時間delimiter $drop procedure transport_status;create procedure transport_status(start_time datetime,end_time datetime)begin        declare mid_start_time datetime;        declare mid_end_time datetime;        set mid_start_time=start_time;        set mid_end_time=date_add(start_time, interval 5 minute);        lab: while mid_start_time < end_time do                insert into                        test.transport_status(stamp,stamp_time,address,car_count)                        (select                                FLOOR(UNIX_TIMESTAMP(time)/300) as stmp,                                date_format(mid_end_time,'%Y-%m-%d %H:%i:%s') as tm,                                address,                                count(address) as cnt                        from                        test.transport20140901                        where                        time > date_add(mid_start_time, interval -1 second)                        and time < mid_end_time                        group by address);                set mid_start_time=date_add(mid_start_time, interval 5 minute);                set mid_end_time=date_add(mid_end_time, interval 5 minute);        end while lab;end $delimiter ;call transport_status("2014-09-01 00:00:00","2014-09-2 00:00:00");



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.