日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

dual mysql 获取序列_MySQL获取周、月、天日期,生成排序号

發(fā)布時(shí)間:2023/12/10 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dual mysql 获取序列_MySQL获取周、月、天日期,生成排序号 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

常用MySQL生成時(shí)間序列

--生成最近七天的日期,不包括當(dāng)天

SELECT @cdate := date_add(@cdate, interval - 1 day) as date?FROM(SELECT @cdate := date_add(date_sub(CURDATE(),interval 1 DAY), interval + 1 DAY)?from resource_publish) t0 LIMIT 7;

2020-06-16

2020-06-15

2020-06-14

2020-06-13

2020-06-12

2020-06-11

2020-06-10

--生成最近七天的日期,包括當(dāng)天

SELECT @cdate := date_add(@cdate, interval - 1 day) as date_str?FROM(SELECT @cdate := date_add(CURDATE(), interval + 1 DAY) from resource_publish) t0 LIMIT 7;

2020-06-17

2020-06-16

2020-06-15

2020-06-14

2020-06-13

2020-06-12

2020-06-11

--生成最近七天的日期,包括當(dāng)天

SELECT @cdate := date_add(@cdate, interval - 1 day) as date_str?FROM(SELECT @cdate := date_add('202006017', interval + 1 DAY) from resource_publish) t0 LIMIT 7;

2020-06-17

2020-06-16

2020-06-15

2020-06-14

2020-06-13

2020-06-12

2020-06-11

--生成十二天每月的日期,包括當(dāng)月

SELECT @cdate := date_add(@cdate, interval - 1 MONTH) as date_str?FROM(SELECT @cdate := date_add(CURDATE(), interval + 1 MONTH) from resource_publish) t0 LIMIT 12;

2020-06-17

2020-05-17

2020-04-17

2020-03-17

2020-02-17

2020-01-17

2019-12-17

2019-11-17

2019-10-17

2019-09-17

2019-08-17

2019-07-17

-- 查詢最近七個(gè)月每月日期

SELECT @cdate := date_add(@cdate, interval - 1 MONTH) as daytime FROM(SELECT @cdate := date_add(date_sub(CURDATE(),interval 1 MONTH), interval + 1 MONTH)?from test_tb) t0 LIMIT 7;

2020-05-17

2020-04-17

2020-03-17

2020-02-17

2020-01-17

2019-12-17

2019-11-17

-- 查詢最近六個(gè)月每月月末日期

SELECT @lastDay := last_day( date_add(@lastDay,interval 1 month )) lastDays?from (SELECT @lastDay := date_add(curdate(),interval -6 month) from?test_tb limit 6) a;

2020-01-31

2020-02-29

2020-03-31

2020-04-30

2020-05-31

2020-06-30

-- 查詢最近七月的月份

SELECT date_format(@lastDay := last_day( date_add(@lastDay,interval 1 month ) ) ,'%Y-%m' ) lastDays?from (SELECT @lastDay := date_add(curdate(),interval -6 month) from?test_tb limit 6) a;

2020-01

2020-02

2020-03

2020-04

2020-05

2020-06

-- 獲取當(dāng)年所有月份

SELECT date_format(@lastDay := last_day(date_add(@lastDay,interval 1 month)) ,'%Y-%m') lastDays from (SELECT @lastDay := date_add(curdate(),interval -MONTH(curdate()) month) from?test_tb LIMIT 12) a;

-- 獲取當(dāng)年所有月份

SELECT CASE WHEN length(mon) = 1 THEN concat(LEFT (CURRENT_DATE, 5),'0',mon)??ELSE concat(LEFT(CURRENT_DATE, 5), mon) END months?FROM (SELECT @m :=@m + 1 mon FROM?test_tb,(SELECT @m := 0) a) aa LIMIT 12;

2020-01

2020-02

2020-03

2020-04

2020-05

2020-06

2020-07

2020-08

2020-09

2020-10

2020-11

2020-12

--生成當(dāng)年十二個(gè)月

SELECT CONCAT(YEAR(CURRENT_DATE()),'-01') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-02') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-03') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-04') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-05') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-06') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-07') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-08') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-09') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-10') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-11') AS date UNION

SELECT CONCAT(YEAR(CURRENT_DATE()),'-12') AS date

-- 獲取當(dāng)年第一個(gè)月份

SELECT date_format(date_sub(date_sub(curdate(),interval day(curdate()) - 1 day),interval MONTH(CURDATE())-1 month),'%Y-%m');

2020-01

-- 獲取時(shí)間字符串第一個(gè)月份

SELECT date_format(date_sub(concat('2020-06', '-01'), interval MONTH(concat('2020-06', '-01'))-1 month), '%Y-%m')

-- 上月月份

select extract(YEAR_MONTH from date_add(NOW(), interval -1 month));      --?202005

-- 上年月份

select extract(YEAR_MONTH from date_add(NOW(), interval -1 year));       --201906

-- 查看最近兩周內(nèi)的工作日

SELECT * FROM(SELECT daystr,WEEKDAY(daystr) AS wd FROM(SELECT @cdate := date_add(@cdate, interval - 1 day) as daystr FROM(SELECT @cdate := date_add(date_sub(CURDATE(),interval 1 DAY), interval + 1 DAY)?from tb_name ) t0 LIMIT 14) ds) aa WHERE wd!='5' AND wd!='6';

1 2020-06-16

0 2020-06-15

4 2020-06-12

3 2020-06-11

2 2020-06-10

1 2020-06-09

0 2020-06-08

4 2020-06-05

3 2020-06-04

2 2020-06-03

set @rownum=0; select @rownum:=@rownum+1 as rownum;select (@i:=@i+1) as rownum FROM (select @i:=0) as rn;      -- 和其他列組合自動(dòng)生成序號(hào)

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 35 DAY);      -- 獲取六周前的周一:2020-05-11

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 0 DAY);      -- 獲取當(dāng)前周所在的周一:2020-06-15

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 6 DAY);?   -- 獲取當(dāng)前周所在的周日:2020-06-021

SELECT date_add(DATE_ADD(curdate(),interval -day(curdate())+1 day),interval -6 month);   -- 獲取六個(gè)月前第一天:2019-12-01

SELECT DATE_ADD(curdate(),interval -day(curdate())+1 day);        -- 獲取當(dāng)月第一天:2020-06-01

WEEK(date[,mode])函數(shù)

此函數(shù)返回日期的周數(shù)。雙參數(shù)的形式WEEK()允許你指定星期是否開始于周日或周一,以及是否返回值應(yīng)在范圍從0到53或從1到53。 如果省略了mode參數(shù),系統(tǒng)default_week_format變量的值被使用。

SELECT WEEK(‘2020-06-17’,1);    --當(dāng)前日期是第:25 周

WEEKOFYEAR(date)

返回日期用數(shù)字表示的范圍是從1到53的日歷周。WEEKOFYEAR()是一個(gè)兼容性函數(shù),它等效于WEEK(date,3)。

SELECT WEEKOFYEAR('2020-06-17');    --當(dāng)前日期是第:25 周

YEARWEEK

YEARWEEK 是獲取年份和周數(shù)的一個(gè)函數(shù),函數(shù)形式為 YEARWEEK(date[,mode])

SELECT YEARWEEK('2020-06-17');      --?當(dāng)前日期是第:202024

date_format(date,'%u')

%U周 (01-53) 星期日是一周的第一天

%u周 (01-53) 星期一是一周的第一天

DAYOFWEEK

DAYOFWEEK 轉(zhuǎn)換日期為周幾的函數(shù),1 = Sunday, 2 = Monday, 3 = Tuesday, 4 = Wednesday, 5 = Thursday, 6 = Friday, 7 = Saturday

select DAYOFWEEK('2020-06-17');      -- 周三為 4

SELECT dayofweek(now());         -- 查看當(dāng)日是周幾

--當(dāng)年第一天: 2020-01-01

select date_sub(curdate(),interval dayofyear(now())-1 day);

--當(dāng)年第一天: 2020-01-01

select concat(date_format(last_day(makedate(extract(year from curdate()),1) + interval quarter(curdate())*3-6 month),'%y-%m-'),'01');

--當(dāng)年最后一天: 2020-12-31

SELECT concat(YEAR(now()),'-12-31');

--當(dāng)前week的第一天: 2020-06-14

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY);

--當(dāng)前week的最后一天: 2020-06-20

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY);

--前一week的第一天: 2020-06-07

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY);

--前一week的最后一天: 2020-06-13

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY);

--前兩week的第一天: 2020-05-31

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 15 DAY);

--前兩week的最后一天: 2020-06-06

select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 9 DAY);

select curdate();                --獲取當(dāng)前日期

select date_sub(curdate(),interval 1 day);     -- 獲取前一天日期

select last_day(curdate());             --獲取當(dāng)月最后一天:2020-06-30

select last_day(now());??            -- 當(dāng)前月的最后一天:2020-06-30

-- 當(dāng)前月的最后一天:2020-06-30

select last_day(makedate(extract(year from curdate()),1) + interval quarter(curdate())*3-1 month);

select DATE_ADD(curdate(),interval -day(curdate())+1 day);          --獲取本月第一天:2020-06-01

select date_add(curdate(), interval - day(curdate()) + 1 day);         --獲取本月第一天:2020-06-01

select concat(date_format(last_day(now()),'%y-%m-'),'01');?        ? --當(dāng)前月的第一天:?2020-06-01

select extract(YEAR_MONTH from date_add(NOW(), interval -1 month));?   --獲取上月月份:202005

-- 上月第一天:2020-05-01

select date_sub(date_sub(date_format(now(),'%Y-%m-%d'),interval extract(day from now())-1 day),interval 1 month);

SELECT date_sub(date_sub(curdate(),interval day(curdate()) - 1 day),interval 1 month);

--上月第一天:2020-05-01

select concat(date_format(last_day(now() - interval 1 month),'%y-%m-'),'01');

-- 獲取上月月份:2020-05

SELECT date_format(date_sub(date_sub(curdate(),interval day(curdate()) - 1 day),interval 1 month),'%Y-%m');

select date_format(date_add(curdate(),interval -1 month),'%Y-%m');

--獲取當(dāng)年1月份:2020-01

select date_format(date_sub(date_sub(curdate(),interval day(curdate()) - 1 day),interval month(curdate())-1 month),'%Y-%m');

-- 獲取下個(gè)月的第一天:2020-07-01

select date_add(curdate()-day(curdate())+1,interval 1 month);

--獲取當(dāng)前月的天數(shù):30

select DATEDIFF(date_add(curdate()-day(curdate())+1,interval 1 month ),DATE_ADD(curdate(),interval -day(curdate())+1 day)) from dual;

--上兩月第一天: 2020-04-01

select concat(date_format(last_day(now() - interval 2 month),'%y-%m-'),'01');

--上兩月第一天: 2020-04-01

select concat(date_format(last_day(makedate(extract(year from curdate()),1) + interval quarter(curdate())*3-3 month),'%Y-%m-'),'01');

--上月最后一天: 2020-05-31

select last_day(now() - interval 1 month);

--上兩月最后一天: 2020-04-30

select last_day(now() - interval 2 month);

--上兩月最后一天: 2020-04-30

select last_day(makedate(extract(year from curdate()),1) + interval quarter(curdate())*3-3 month);

--上兩月最后一天: 2020-04-30

select last_day(makedate(extract(year from curdate()),1) + interval quarter(curdate())*3-3 month);

-- MySQL 查詢百分占比三種方式:1.字段里嵌套子查詢統(tǒng)計(jì)總數(shù),2.嵌套臨時(shí)表統(tǒng)計(jì)總數(shù),3.設(shè)置臨時(shí)變量統(tǒng)計(jì)總數(shù)

set @sum=(select sum(ct_col) from test_tb);

select ct_col,round((ct_col/@sum*100),2) as ct from test_tb group by?ct_col order by ct desc;

MySQL時(shí)間格式化:??%Y-%m-%d %H:%i:%s.%f

SELECT DATE_FORMAT('2020-06-17 15:23:16.463','%Y-%m-%d %H:%i:%s.%f')

2020-06-17 15:23:16.463000

MySQL判空函數(shù):

IFNULL(expr,expr)       處理如果字段為空,返回默認(rèn)值,sum是統(tǒng)計(jì)求和,

IFNULL(SUM(expr1),expr2)  是統(tǒng)計(jì)求和之后為空返回默認(rèn)值

SUM(IFNULL(expr1,expr2))  是判斷字段為空返回默認(rèn)值再求和

作者:Jason Zeng 于 2020-06-17

博客:http://www.cnblogs.com/zengming/

GItHub:https://github.com/lovelifeming

嚴(yán)正聲明:

1.由于本博客部分資源來自互聯(lián)網(wǎng),版權(quán)均歸原作者所有。轉(zhuǎn)載的目的是用于學(xué)術(shù)交流與討論學(xué)習(xí),將不對(duì)任何資源負(fù)法律責(zé)任。

2.若無意中侵犯到您的版權(quán)利益,請(qǐng)來信聯(lián)系我,我會(huì)在收到信息后會(huì)盡快給予處理!

3.所有資源內(nèi)容僅供學(xué)習(xí)交流之用,請(qǐng)勿用作商業(yè)用途,謝謝。

4.如有轉(zhuǎn)發(fā)請(qǐng)注明出處,來源于http://www.cnblogs.com/zengming/,謝謝合作。

總結(jié)

以上是生活随笔為你收集整理的dual mysql 获取序列_MySQL获取周、月、天日期,生成排序号的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。