1.关键字:
将日期格式转换成时间戳格式
unix_timestamp();将日期格式 转换成指定格式
date_format(date(),'%y-%m-%d');
2.interval的说明
上个月或上周之类的 用这个来指定
interval 2 month -- 前几个月 数值就是几
当函数使用时,即interval(),为比较函数,如:interval(10,1,3,5,7); 结果为4;
原理:10为被比较数,后面1,3,5,7为比较数,将后面四个依次与10比较,看后面数字组有多少个少于10,则返回其个数。前提是后面数字组为从小到大排列,否则返回结果0。
当关键词使用时,表示为设置时间间隔,常用在date_add()与date_sub()函数里,如:interval 1 day ,解释为将时间间隔设置为1天。
3.当前日期
select now();
或
select current_timestamp();
结果
2019-12-24 15:57:28
或
select curdate()
结果
2019-12-24
4.当前时间戳
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
-
书写sql:select now(); 查询出当前的时间:2018-06-08 13:32:22;
now函数为mysql的当前日期函数;

-
书写sql:select date_format(now(),'%Y-%m-%d');
查询出的时间格式为:2018-06-08;
date_format函数是mysql的格式化日期函数;
%Y和%y的区别则是:前者查询出完整2018,后者则是查询简写的18;

-
书写sql:select curdate(); 查询出当前日期2018-06-08,不带时分秒;

-
书写sql:select curtime(); 查询出当前时间13:40:11,不带年月日;

-
书写sql:select dayofweek(now());查询出一个数字,代表着星期;
星期的排列方式为:星期日:1;星期一:2;...以此类推;

这篇博客介绍了MySQL中处理日期和时间的各种函数和操作,包括将日期转换为时间戳、使用interval指定时间间隔、获取当前日期和时间戳、计算月份的第一天和最后一天等,并提供了相应的SQL示例。
21万+

被折叠的 条评论
为什么被折叠?



