一、连接年月日
STR_TO_DATE(concat(stat_year,'-',stat_month,'-',stat_day),'%Y-%m-%d')
是把年月日拼接成字符串之后再转车date类型
二、查询从表中获取最新日期
(1)查询从具有日期记录的表中获取最新日期
create table ZZZZTable
(
DueDate date
); #创建表insert into ZZZZTable values('2018-10-01'); #往表里加数值
insert into ZZZZTable values('2016-12-31');
insert into ZZZZTable values('2019-07-02');
insert into ZZZZTable values('2015-01-12');
insert into ZZZZTable values('2019-04-26');
select *from ZZZZTable order by DueDate DESC limit 1
(2)提取每个name对应的最新的日期
表:
select *,max(DueDate) as 最新日期 from ZZZZTable
group by name
三、活用DATEDIFF函数
datediff(参数1,参数2)
参数1 - 参数2 等于两个日期的间隔天数,结果可表示正负。
select datediff('2022-01-02','2022-02-01')
如果涉及到时分秒日期:
select datediff('2022-01-02 22:00:00','2022-02-01')
注:在日期计算中,如果存在时分秒的部分,该部分会被忽略。
datediff只对日期(年月日)部分进行计算,即只对天进行计算。
四、字符串转日期
rq字段形式:20100901
1)无需转换的:
SELECT * FROM tairlist_day WHERE rq>'2010-07-31' AND rq<'2010-09-01'
2)使用:DATE_FORMAT
SELECT * FROM tairlist_day
WHERE DATE_FORMAT( rq, '%Y-%m-%d')>'2010-08-01' AND DATE_FORMAT( rq, '%Y-%m-%d')<'2010-08-03'
其中第1要在一个“宽松”的语法是被允许的:以任何标点符号作为日期部分和时间部分中的定界符,如:一个 YYYYMMDD 或 YYMMDD 格式的数字,只要数字看起来像是一个日期。例如,19830905 和 830905 被解释成为 '1983-09-05 '。
部分参考:
原文链接:https://blog.csdn.net/superbfly/article/details/12783141