mysql查询 日期类型为varchar date datatime 当日 昨日 一周内 一月内 本季度 本年 数据

开发过程中,我们经常需要查询查询数据库中符合指定日期条件的数据,如当日,昨日,一周内,一月内的数据,以下为mysql中查询指定日期的方式。包含date datetime varchar 三种日期类型用法

字段说明:sign_date 为date类型
rec_crt_ts 为datatime类型
sign_begin_time 为varchar类型

TO_DAYS() 函数用法为返回从年份0开始的天数  

-- 查询当日的数据 rec_crt_ts 类型为datetime
SELECT * FROM `tbl_task_sign_sub_acct` WHERE TO_DAYS(NOW()) =  TO_DAYS(rec_crt_ts);

-- 查询当日的数据 sign_date 类型为date
SELECT * FROM `tbl_task_sign_sub_acct` WHERE TO_DAYS(NOW()) =  TO_DAYS(sign_date);

-- 查询当日的数据 sign_begin_time类型为varchar
SELECT * FROM `tbl_task_sign_sub_acct` WHERE TO_DAYS(NOW()) =  TO_DAYS(sign_begin_time);

-- 查询昨日的数据 rec_crt_ts 类型为datetime
SELECT * FROM `tbl_task_sign_sub_acct` WHERE TO_DAYS(NOW()) -  TO_DAYS(rec_crt_ts) = 1;

-- 查询昨日的数据  sign_date 类型为date
SELECT * FROM `tbl_task_sign_sub_acct` WHERE TO_DAYS(NOW()) -  TO_DAYS(sign_date) = 1;

-- 查询昨日的数据  sign_begin_time类型为varchar
SELECT * FROM `tbl_task_sign_sub_acct` WHERE TO_DAYS(NOW()) -  TO_DAYS(sign_begin_time) = 1;

DATE_SUB(d,INTERVAL expr type)函数用法

DATE_SUB(d,INTERVAL expr type)函数返回起始日期d减去一个时间段后的日期。

expr是一个表达式,用来指定从起始日期添加或减去的时间间隔值。

expr是一个字符串。对于负值的时间间隔,它可以用一个负号“-”开头。

expr表达式与后面的间隔类型type对应。

MySQL中的日期间隔类型如下表所示:
在这里插入图片描述

-- 查询7日内的数据,包含今日 sign_date 类型为date
SELECT * FROM tbl_task_sign_sub_acct  where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(sign_date);

-- 查询7日内的数据,包含今日 rec_crt_ts 类型为datetime
SELECT * FROM tbl_task_sign_sub_acct  where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(rec_crt_ts);

-- 查询7日内的数据,包含今日 sign_begin_time类型为varchar
SELECT * FROM tbl_task_sign_sub_acct  where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(sign_begin_time);

--查询指定日期近7日的数据,包含今日 date datetime varchar 类型通用
SELECT * FROM tbl_task_sign_sub_acct  where DATE_SUB('2022-02-18', INTERVAL 7 DAY) < date(sign_date);

-- 查询本月内的数据 sign_date 类型为date
SELECT * FROM `tbl_task_sign_sub_acct` WHERE DATE_FORMAT(sign_date, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m');

-- 查询本月内的数据 rec_crt_ts 类型为datetime
SELECT * FROM `tbl_task_sign_sub_acct` WHERE DATE_FORMAT(rec_crt_ts, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m');

-- 查询本月内的数据 sign_begin_time为varchar
SELECT * FROM `tbl_task_sign_sub_acct` WHERE DATE_FORMAT(sign_begin_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m');

-- 查询上个月的数据  date  datetime varchar 类型一样的用法,均可用此sql
SELECT * FROM `tbl_task_sign_sub_acct` WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'),DATE_FORMAT(sign_begin_time,'%Y%m')) =1;

-- 查询本季度的数据 date  datetime varchar 类型一样的用法,均可用此sql
SELECT * FROM `tbl_task_sign_sub_acct` WHERE QUARTER(sign_date)=QUARTER(NOW());

-- 查询上季度的数据 date  datetime varchar 类型一样的用法,均可用此sql
SELECT * FROM `tbl_task_sign_sub_acct` WHERE QUARTER(sign_date)=QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER));

-- 查询今年的数据 date  datetime varchar 类型一样的用法,均可用此sql
SELECT * FROM `tbl_task_sign_sub_acct` WHERE YEAR(sign_date)=YEAR(NOW());

-- 查询上一年的数据 date  datetime varchar 类型一样的用法,均可用此sql
SELECT * FROM `tbl_task_sign_sub_acct` WHERE YEAR(sign_date)=YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值