参考:https://blog.csdn.net/weixin_42362496/article/details/88015129
参考:https://blog.csdn.net/TiaoZhanJi_Xian/article/details/51994336
参考:https://www.jianshu.com/p/1de4b0dfbce0
关键字:
将日期格式转换成时间戳格式
unix_timestamp();
将日期格式 转换成指定格式
date_format(date(),'%y-%m-%d');
上个月或上周之类的 用这个来指定
interval 2 month -- 前几个月 数值就是几
interval的说明:
当函数使用时,即interval(),为比较函数,如:interval(10,1,3,5,7); 结果为4;原理:10为被比较数,后面1,3,5,7为比较数,将后面四个依次与10比较,看后面数字组有多少个少于10,则返回其个数。前提是后面数字组为从小到大排列,否则返回结果0。
当关键词使用时,表示为设置时间间隔,常用在date_add()与date_sub()函数里,如:interval 1 day ,解释为将时间间隔设置为1天。
当前日期:
select now();
或
select current_timestamp();
结果
2019-12-24 15:57:28
或
select curdate()
结果
2019-12-24
当前时间戳
或
select unix_timestamp(now());
结果:
1541604376
本月第一天日期
select date_sub(
date_format(now(),'%y-%m-%d %h-%m-%s'),
interval extract(day from now())-1 day
)
结果
2019-12-01 04:12:11
或
select date_add(curdate(), interval - day(curdate()) + 1 day);
结果
2019-12-01
本月第一天时间戳(零点)
select unix_timestamp(date_format(NOW(), '%Y-%m-01')
结果
1575129600
本月最后一天日期
select last_day(curdate());
或
select last_day(now());
结果
2019-12-31
本月最后一天时间戳
select unix_timestamp(last_day(curdate()))
结果
1577721600
上月第一天日期
select
date_sub(
date_sub(
date_format(now(),'%y-%m-%d %h:%m:%s'),
interval extract(day from now())-1 day
),
interval 1 month
)
结果
2019-11-01 12:58:56
或
select date_add(curdate()-day(curdate())+1,interval -1 month);
结果
2019-11-01
上月第一天时间戳
select unix_timestamp(
date_sub(
date_sub(
date_format(now(),'%y-%m-%d'),
interval extract(day from now())-1 day
),
interval 1 month
)
)
结果
1572537600
上月最后一天日期
select date_sub(
date_sub(
date_format(now(),'%y-%m-%d'),
interval extract(day from now()) day
),
interval 0 month
) as date
或
select last_day(date_sub(now(),interval 1 month));
结果:
2019-11-30
上月最后一天时间戳
select unix_timestamp(
date_sub(
date_sub(
date_format(now(),'%y-%m-%d'),
interval extract(day from now()) day
),
interval 0 month
)
)as date
结果:
1575043200
下个月第一天日期
select date_add( curdate() - day(curdate()) + 1,interval 1 month )
结果
2020-01-01
下一月最后一天日期
select last_day(date_sub(now(),interval -1 month));
结果
2020-01-31
本月总天数
select day(last_day(curdate()));
或
select DATEDIFF(
date_add(curdate()-day(curdate())+1,interval 1 month),
date_add(curdate(),interval -day(curdate())+1 day)
) from dual
结果
31
上月 今天 的 当前 日期
select date_sub(curdate(), interval 1 month);
结果
2019-11-24
上月 今天 的 当前 时间戳
select unix_timestamp(date_sub(now(),interval 1 month));
结果
1574585103
本年第一天日期
select date_sub(curdate(),interval dayofyear(now()) -1 day)
或
SELECT concat(YEAR(now()),'-01-01');
结果
2019-01-01
当前week的第一天(周日) 的日期
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY);
结果:
其他:
#当前week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY);
#当前week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) - 5 DAY);
#前一week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 8 DAY);
#前一week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 2 DAY);
#前两week的第一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 15 DAY);
#前两week的最后一天:
select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 9 DAY);
当前时间 与 上个月 之间的天数
select datediff(curdate(), date_sub(curdate(), interval 1 month));
结果
30