mysql 日期类型计算 20251421编辑

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

mysql 日期类型计算

Created by Marydon on 2022-02-12 20:00

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);

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(1420)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。