MySQL学习:连接年月日,并查询查询从表中获取最新日期,活用Datediff()

本文介绍了SQL中连接年月日的方法,如何从表中获取最新日期,DATEDIFF函数的使用,以及如何将字符串转换为日期。示例包括STR_TO_DATE函数、查询最新日期的SQL语句、DATEDIFF计算日期间隔以及处理不同格式日期字符串的方法。
摘要由CSDN通过智能技术生成

一、连接年月日

 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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值