欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql獲取指定時(shí)間段中所有日期或月份的語句(不設(shè)存儲(chǔ)過程,不加表)

 更新時(shí)間:2021年06月17日 23:44:42   作者:骨力  
最近需要用mysql獲取一個(gè)時(shí)間段中的所有月份,網(wǎng)上查都是要設(shè)置存儲(chǔ)過程或者加一個(gè)日期表的,不滿足我的需求,翻墻找資料加上自己試驗(yàn),如下代碼分享給大家

mysql獲取一個(gè)時(shí)間段中所有日期或者月份

1:mysql獲取時(shí)間段所有月份

select DATE_FORMAT(date_add('2020-01-20 00:00:00', interval row MONTH),'%Y-%m') date from
 ( 
    SELECT @row := @row + 1 as row FROM 
    (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t,
    (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2, 
    (SELECT @row:=-1) r
 ) se
 where DATE_FORMAT(date_add('2020-01-20 00:00:00', interval row MONTH),'%Y-%m') <= DATE_FORMAT('2020-04-02 00:00:00','%Y-%m')

2:mysql獲取時(shí)間段所有日期

select date_add('2020-01-20 00:00:00', interval row DAY) date from
 ( 
    SELECT @row := @row + 1 as row FROM 
    (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t,
    (select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2, 
    (SELECT @row:=-1) r
 ) se
 where date_add('2020-01-20 00:00:00', interval row DAY) <= '2020-03-02 00:00:00'

備注:

這段代碼表示數(shù)據(jù)條數(shù)限制,寫兩次查詢的日期最多顯示100條,寫三次查詢?nèi)掌谧疃囡@示1000次,以此類推,根據(jù)你自己的需求決定

下面是設(shè)置最多顯示條數(shù)10000寫法

希望能幫助到你,萌新在線求帶?。?!

下面是其他網(wǎng)友的補(bǔ)充大家可以參考一下

1、不使用存儲(chǔ)過程,不使用臨時(shí)表,不使用循環(huán)在Mysql中獲取一個(gè)時(shí)間段的全部日期

select a.Date 
from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
) a
where a.Date between '2017-11-10' and '2017-11-15'

輸出如下

Date
----------
2017-11-15
2017-11-14
2017-11-13
2017-11-12
2017-11-11
2017-11-10

2、mysql獲取兩個(gè)日期內(nèi)的所有日期列表

select @num:=@num+1,date_format(adddate('2015-09-01', INTERVAL @num DAY),'%Y-%m-%d') as date
from btc_user,(select @num:=0) t where adddate('2015-09-01', INTERVAL @num DAY) <= date_format(curdate(),'%Y-%m-%d')
order by date;

此方法優(yōu)點(diǎn)就是不需要?jiǎng)?chuàng)建存儲(chǔ)過程或者是日歷表,缺點(diǎn)就是你必須要有一個(gè)表,它的數(shù)據(jù)條數(shù)大到足夠支撐你要查詢的天數(shù)

3、mysql獲取給定時(shí)間段內(nèi)的所有日期列表(存儲(chǔ)過程)

DELIMITER $$
DROP PROCEDURE IF EXISTS create_calendar $$
CREATE PROCEDURE create_calendar (s_date DATE, e_date DATE)
BEGIN
-- 生成一個(gè)日歷表
SET @createSql = ‘CREATE TABLE IF NOT EXISTS calendar_custom (
`date` date NOT NULL,
UNIQUE KEY `unique_date` (`date`) USING BTREE
)ENGINE=InnoDB DEFAULT CHARSET=utf8‘;
prepare stmt from @createSql;
execute stmt;
WHILE s_date <= e_date DO
INSERT IGNORE INTO calendar_custom VALUES (DATE(s_date)) ;
SET s_date = s_date + INTERVAL 1 DAY ;
END WHILE ;
END$$
DELIMITER ;
-- 生成數(shù)據(jù)到calendar_custom表2009-01-01~2029-01-01之間的所有日期數(shù)據(jù)
CALL create_calendar (‘2009-01-01‘, ‘2029-01-01‘);
DELIMITER $$
DROP PROCEDURE IF EXISTS create_calendar $$
CREATE PROCEDURE create_calendar (s_date DATE, e_date DATE)
BEGIN
-- 生成一個(gè)日歷表
SET @createSql = ‘truncate TABLE calendar_custom‘;
prepare stmt from @createSql;
execute stmt;
WHILE s_date <= e_date DO
INSERT IGNORE INTO calendar_custom VALUES (DATE(s_date)) ;
SET s_date = s_date + INTERVAL 1 DAY ;
END WHILE ;
END$$
DELIMITER ;
-- 生成數(shù)據(jù)到calendar_custom表2009-01-01~2029-01-01之間的所有日期數(shù)據(jù)
CALL create_calendar (‘2009-01-02‘, ‘2009-01-07‘);

到此這篇關(guān)于mysql獲取指定時(shí)間段中所有日期或月份的語句(不設(shè)存儲(chǔ)過程,不加表)的文章就介紹到這了,更多相關(guān)mysql獲取指定時(shí)間段中的日期與月份內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中any、some和all的用法實(shí)例

    MySQL中any、some和all的用法實(shí)例

    最近一直在練習(xí)MYSQL的多表查詢,基本上每個(gè)查詢語句我都會(huì)寫至少兩次,下面這篇文章主要給大家介紹了關(guān)于MySQL中any、some和all用法的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • MYSQL本地安裝以及出現(xiàn)的問題解決

    MYSQL本地安裝以及出現(xiàn)的問題解決

    這篇文章主要給大家介紹了關(guān)于MYSQL本地安裝以及出現(xiàn)問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MySQL截取和拆分字符串函數(shù)用法示例

    MySQL截取和拆分字符串函數(shù)用法示例

    這篇文章主要介紹了MySQL截取和拆分字符串函數(shù)用法,結(jié)合實(shí)例形式分析了mysql針對(duì)字符串的截取與拆分函數(shù)SUBSTRING及SUBSTRING_INDEX相關(guān)使用方法,需要的朋友可以參考下
    2016-09-09
  • Mysql聯(lián)合索引的原理與實(shí)現(xiàn)

    Mysql聯(lián)合索引的原理與實(shí)現(xiàn)

    聯(lián)合索引是一種將多個(gè)列組合成一個(gè)索引的技術(shù),以提高基于這些列進(jìn)行查詢的性能,本文主要介紹了Mysql聯(lián)合索引的原理與實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • 細(xì)說mysql replace into用法

    細(xì)說mysql replace into用法

    這篇文章主要介紹了細(xì)說mysql replace into,需要的朋友可以參考下
    2021-03-03
  • mysql-canal-rabbitmq 安裝部署超詳細(xì)教程

    mysql-canal-rabbitmq 安裝部署超詳細(xì)教程

    這篇文章主要介紹了mysql-canal-rabbitmq 安裝部署超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • MySQL存儲(chǔ)過程中一些基本的異常處理教程

    MySQL存儲(chǔ)過程中一些基本的異常處理教程

    這篇文章主要介紹了MySQL存儲(chǔ)過程中一些基本的異常處理教程,其中rollback命令的使用需要謹(jǐn)慎一些,需要的朋友可以參考下
    2015-12-12
  • MySQL5.7.21解壓版安裝詳細(xì)教程圖解

    MySQL5.7.21解壓版安裝詳細(xì)教程圖解

    對(duì)于小編來說安裝系統(tǒng)軟件是常干的事情,今天小編抽空給大家整理了MySQL5.7.21解壓版安裝詳細(xì)教程圖解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-09-09
  • MySQL千萬級(jí)大表進(jìn)行數(shù)據(jù)清理的幾種常見方案

    MySQL千萬級(jí)大表進(jìn)行數(shù)據(jù)清理的幾種常見方案

    當(dāng)MySQL數(shù)據(jù)庫中的表數(shù)據(jù)量達(dá)到千萬級(jí)別時(shí),直接對(duì)數(shù)據(jù)進(jìn)行刪除操作將面臨嚴(yán)重的性能問題,可能會(huì)導(dǎo)致數(shù)據(jù)庫長(zhǎng)時(shí)間的鎖表,因此,如何安全高效地進(jìn)行數(shù)據(jù)清理成為一個(gè)亟需解決的問題,下面我將分享幾種常見的數(shù)據(jù)清理方案,需要的朋友可以參考下
    2023-11-11
  • 解決Navicat for MySQL 連接 MySQL 報(bào)2005錯(cuò)誤的問題

    解決Navicat for MySQL 連接 MySQL 報(bào)2005錯(cuò)誤的問題

    在本地MySQL的服務(wù)啟動(dòng)后,由于Navicat的一些功能需要聯(lián)網(wǎng)才可以使用,今天重點(diǎn)給大家介紹Navicat for MySQL 連接 MySQL 報(bào)2005 -Unknown MySQL server host ‘localhost’(0)錯(cuò)誤的情況與解決方法,感興趣的朋友一起看看吧
    2021-05-05

最新評(píng)論