mysql的时间/日期操作集合

今天要用到mysql,发现mysql的时间操作跟orcal时不一样的,在这整理记录下mysql的时间/日期操作集合。

Mysql中date_format()和str_to_date()函数

  1. date_format(date,’%Y-%m-%d’) ———————>oracle中的to_char();
  2. str_to_date(date,’%Y-%m-%d’) ———————>oracle中的to_date();

分隔符一致,年月日要一致、
str_to_date()函数

  1. select str_to_date('2016-09-09 15:43:28','%Y-%m-%d %H:%i:%s');
  2. select str_to_date('2016-09-09 08:43:28', '%Y-%m-%d %h:%i:%s');

注:H大写和h小写的区别? H大写是指的是:24小时制;h小写是指的是12小时制;

  1. %Y:代表4位的年份
  2. %y:代表2为的年份
  3. %m:代表月, 格式为(01……12)
  4. %c:代表月, 格式为(1……12)
  5. %d:代表月份中的天数,格式为(00……31)
  6. %e:代表月份中的天数, 格式为(0……31)
  7. %H:代表小时,格式为(00……23)
  8. %k:代表 小时,格式为(0……23)
  9. %h 代表小时,格式为(01……12)
  10. %I 代表小时,格式为(01……12)
  11. %l :代表小时,格式为(1……12)
  12. %i 代表分钟, 格式为(00……59)
  13. %r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
  14. %T:代表 时间,格式为24 小时(hh:mm:ss)
  15. %S:代表 秒,格式为(00……59)
  16. %s:代表 秒,格式为(00……59)

今天

  1. select * from 表名 where to_days(时间字段名) = to_days(now());

昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1
近7天

  1. SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

近30天

  1. SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

查询某月份的数据(4月)

  1. select * from day_rate where month(date)='04'

本月

  1. SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

上一月

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

查询本季度数据

  1. select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());

查询上季度数据

  1. select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

查询某年的数据2019

  1. select * from day_rate where year(date)='2019'

查询本年数据

  1. select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());

查询上年数据

  1. select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));

查询当前这周的数据

  1. SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());

查询上周的数据

  1. SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;