日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

需求背景

我們在工作中,經(jīng)常遇到這樣一個需求:需要某一年的所有自然日列表,或者某幾年的自然日列表。可惜的是,MySQL中沒有任何一個函數(shù)可以生成給出的兩個日期之間的所以自然日。

要想根據(jù)指定的兩個日期,得到這兩個日期之間所有的自然日,我們需要自己動手來實現(xiàn)。

創(chuàng)建存儲過程

我們需要使用MySQL的interval n day這個函數(shù),然后通過存儲過程來實現(xiàn)。具體的示例如下:

/*定義SQL語句的分隔符為兩個美元符號*/
DELIMITER $$

/*如果存儲過程存在,刪除掉這個存儲過程*/
DROP PROCEDURE IF EXISTS create_calendar $$

/*創(chuàng)建存儲過程*/
CREATE PROCEDURE create_calendar (start_date DATE, end_date DATE)
BEGIN
  	/*定義日期表的DDL語句*/
    SET @create_sql = '
    CREATE TABLE IF NOT EXISTS calendar_day_list (
    	`calendar_day` date NOT NULL,
      UNIQUE KEY `unique_date` (`calendar_day`) USING BTREE
    )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    ';
    /*準(zhǔn)備DDL語句,然后執(zhí)行該DDL語句*/
    prepare stmt from @create_sql;
    execute stmt;
    
    /*根據(jù)傳入的時間點,循環(huán)向表中插入日期*/
    WHILE start_date <= end_date DO
        INSERT IGNORE INTO calendar_day_list VALUES (DATE(start_date));
        SET start_date = start_date + INTERVAL 1 DAY;
    END WHILE;
END$$ /*存儲過程創(chuàng)建結(jié)束*/

/*重新定義SQL語句的分隔符為分號*/
DELIMITER ;

調(diào)用存儲過程

創(chuàng)建完成上面的存儲過程之后,我們開始調(diào)用存儲過程,調(diào)用方式如下所示:

/*生成數(shù)據(jù)到calendar_custom表2021-01-01~2025-01-01之間的所有日期數(shù)據(jù)*/
CALL create_calendar ('2021-01-01', '2025-01-01');

驗證結(jié)果

mysql> CALL create_calendar ('2021-01-01', '2025-01-01');
Query OK, 1 row affected (0.25 sec)

mysql> show tables;
+-------------------+
| Tables_in_xyz     |
+-------------------+
| calendar_day_list |
| demo              |
| dept_info         |
| emp_info          |
| feng              |
| test              |
| test_bak          |
+-------------------+
7 rows in set (0.00 sec)

mysql> select count(1) from calendar_day_list;
+----------+
| count(1) |
+----------+
|     1462 |
+----------+
1 row in set (0.00 sec)

mysql> select * from calendar_day_list limit 10;
+--------------+
| calendar_day |
+--------------+
| 2021-01-01   |
| 2021-01-02   |
| 2021-01-03   |
| 2021-01-04   |
| 2021-01-05   |
| 2021-01-06   |
| 2021-01-07   |
| 2021-01-08   |
| 2021-01-09   |
| 2021-01-10   |
+--------------+
10 rows in set (0.00 sec)

mysql>

分享到:
標(biāo)簽:MySQL
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定