mysql 日期類型計算


1.情景展示

在進行按日期統計數據的時候,我們經常需要對日期的開始時間和結束時間有要求;

在mysql中,日期字段如何進行時間的計算呢?

2.to_days()

to_days(日期)函數:返回從0000年(公元1年)至指定日期的總天數(只計算日期不計算時間)。

to_days(nows()):將當前日期轉換成距離0年的天數;

我們也可以用它來表示:今天

to_days(日期):只計算日期不計算時間,舉例證明:

我們可以看到:

不管是23:59:59還是00:00:00,2022年2月11日轉換成天數后,都是738562天。

2.1查詢今天的數據

select * from 表名 where to_days(時間字段名) = to_days(now());

2.2查詢昨天的數據

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 時間字段名) <= 1

2.3查詢近7天的數據

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(時間字段名)

2.4查詢近30天的數據

SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(時間字段名)

2.5查詢本月的數據

SELECT * FROM 表名 WHERE DATE_FORMAT( 時間字段名, '%Y%m' ) = DATE_FORMAT( CURDATE() , '%Y%m' )

select * from 表名 where date_format(字段名,'%Y-%m')=date_format(now(),'%Y-%m')

2.6查詢上一月的數據

SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now() , '%Y%m' ) , date_format( 時間字段名, '%Y%m' ) ) = 1

select * from 表名 where date_format(字段名,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')

2.7查詢本季度的數據

select * from 表名 where QUARTER(時間字段) = QUARTER(now());

2.8查詢上一季度的數據

select * from 表名 where QUARTER(時間字段)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

2.9查詢本年的數據

select * from 表名 where YEAR(時間字段)=YEAR(NOW());

3.0查詢上一年的數據

select * from 表名 where year(字段名) = year(date_sub(now(),interval 1 year));

3.1查詢本周的數據

SELECT * FROM 表名 WHERE YEARWEEK(date_format(字段名,'%Y-%m-%d')) = YEARWEEK(now());

3.2查詢上一周的數據

SELECT * FROM 表名 WHERE YEARWEEK(date_format(字段名,'%Y-%m-%d')) = YEARWEEK(now()) - 1;

3.3查詢近6月的數據

select * from 表名 where 字段名 between date_sub(now(),interval 6 month) and now();

3.date_sub()

DATE_SUB(date,INTERVAL expr unit)

date:日期類型;

expr:間隔數字(整數:正整數,時間會往前推;負整數,會往后推);

unit:間隔單位。

select SYSDATE(), DATE_SUB(SYSDATE(),INTERVAL 1 minute)
union
select SYSDATE(), DATE_SUB(SYSDATE(),INTERVAL -1 minute)

有了這個函數,我們就可以取任何時間區間的日期啦(並且語法和Oracle類似)。

4.DATE_ADD()

2022年2月26日19:39:20

DATE_ADD(date,INTERVAL expr unit)

date:日期類型;

expr:間隔數字(整數:正整數,時間會往前推;負整數,會往后推);

unit:間隔單位。

用法和DATE_SUB()一模一樣。

如:獲取本月1號

SELECT DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE()) + 1 DAY);

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM