首页 > 数据库 >mysql 日期类型计算

mysql 日期类型计算

时间:2023-02-14 10:05:38浏览次数:37  
标签:DATE mysql date 日期 表名 类型 now where 字段名

1.情景展示

在进行按日期统计数据的时候,我们经常需要对日期的开始时间和结束时间有要求;

在mysql中,日期字段如何进行时间的计算呢?

2.to_days()

to_days(日期)函数:返回从0000年(公元1年)至指定日期的总天数(只计算日期不计算时间)。

to_days(nows()):将当前日期转换成距离0年的天数;

我们也可以用它来表示:今天

mysql 日期类型计算_表名

to_days(日期):只计算日期不计算时间,举例证明:

mysql 日期类型计算_mysql_02

我们可以看到:

不管是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)

mysql 日期类型计算_表名_03

有了这个函数,我们就可以取任何时间区间的日期啦(并且语法和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);

mysql 日期类型计算_表名_04

写在最后

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



作者:Marydon

标签:DATE,mysql,date,日期,表名,类型,now,where,字段名
From: https://blog.51cto.com/u_15964717/6055552

相关文章

  • mysql 快速备份表数据
    1.情景展示在工作过程中,我们往往会有对表数据进行备份的需求,比如说:对表数据进行大量操作时,为了以防万一,最好是将数据进行备份,以免操作不当,导致无法恢复原有的数据。2.解决方......
  • mysql 报错:Every derived table must have its own alias
    1.情景展示使用mysql对派生表查询数据的时候,报错信息如下:Everyderivedtablemusthaveitsownalias使用谷歌翻译成中文:每个派生表都必须有自己的别名。2.具体分析因为习......
  • mysql 获取系统当前时间的3种方式
    1.获取系统当前日期+时间方式一:now()方式二:sysdate()以上两种方式,对应日期类型:datetime。方式三:CURRENT_TIMESTAMP()/CURRENT_TIMESTAMP对应日期类型:timestamp。方式四:to_da......
  • mysql、oracle like查询不走索引的解决方案
    1.情景展示我们知道:无论是mysql还是oracle,只要使用like查询,就可能会面临索引失效(不走索引)的问题;下面,我们将一起来看看什么情况下,索引会失效,以及如何解决不走索引的问题。已......
  • mysql 非空判断(判断字段值是否为空)
    1.情景展示mysql如何判断表字段值是否为空?2.非空判断方式一:表字段+isnotnull方式二:notisnull(表字段)方式三:!isnull(表字段)3.为空判断方式一:表字段+isnull方式二:is......
  • mysql 循环批量建表(表结构相同,表名可以自定义)
    1.情景展示现在有这样一种需求:我需要建两百多张表,这些表的表结构相同,表的名称也是提前拟定好的,必须使用指定的表名;如果使用一个个写SQL语句,那不还得累死,所以,我想到了可不可......
  • mysql limit分页用法讲解
    1.情景展示在Oracle当中,使用rownum来进行分页;而在mysql中,是没有rownum的,需要通过limit来实现。2.用法介绍limit[offset,]rowslimit后面可以跟一个参数,也可以跟两个参数;格式......
  • mysql、oracle 分组查询,每组取一条数据
    1.情景展示有这样一种需求:将数据按照机构进行分组,然后取每个机构下只取一条记录,如何实现?2.mysql分组查询出来某字段,然后和原来的表进行关联查询。方式一:通过内连接来实现查......
  • MySQL 8.0 修改root远程登录【ERROR 1410 (42000): You are not allowed to create a
    MySQL8.0的数据库root用户默认无法远程登录,需要修改root的远程授权,如下:mysql>grantallprivilegeson*.*to'root'@'%';ERROR1410(42000):Youarenotallowed......
  • (数据库系统概论|王珊)第三章关系数据库标准语言SQL-第零节:MYSQL环境安装和表的建立以及
    pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解目录一:注意事项二:MYSQL环境(1)下载(2)安装(3)MYSQL可视......