ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql查询前一天的数据及对时间格式的操作

2022-01-12 12:34:18  阅读:335  来源: 互联网

标签:m% Y% 日期 str Mysql date 格式 data 前一天


数据库表

 

业务场景:我们需要展示除当天以外的所有日期的aqi平均值,保留小数点后两位,时间是字符串类型,城市是固定的一个,不考虑加入到where条件。 

代码如下:

public void reaTimeLevel() {
        Ret result = Ret.ok("state", "ok");
     
        List<Record> dataList = Db.use("upms").find("select sum(aqi)/24 as saqi,str_to_date(date,'%Y%m%d ') as date,year(str_to_date(date,'%Y%m%d ')) as ayear,LPAD(month(str_to_date(date,'%Y%m%d')),2,0)asamonth,LPAD(day(str_to_date(date,'%Y%m%d ')),2,0) as aday from td_atomsphere  where  str_to_date(date,'%Y%m%d ') < date_sub(now(),INTERVAL 1 day) group by date");
//now(),INTERVAL 1 day  0表示当天 1表示前一天        
//LPAD(参数,长度,补什么)可以在截取的单数日期比如8补为08

        List<Record> recordList = new ArrayList<>();

        for (Record record : dataList) {
            List<String> months = new ArrayList<>();
            List<String> days = new ArrayList<>();
            List<String> years = new ArrayList<>();
            Double avg = Double.valueOf(record.getStr("saqi"));
            avg = (double) Math.round(avg * 100) / 100;//保留小数点后两位

            months.add(record.getStr("amonth"));
            days.add(record.getStr("aday"));
            years.add(record.getStr("ayear"));
            Record data = new Record();
            data.set("months", months);
            data.set("days", days);
            data.set("years", years);
            data.set("avgs", avg);
            recordList.add(data);

        }

        renderJson(Co.ok("data", result.set("data", recordList)));

    }

需要用到的知识点:

一、Mysql中字符串转日期:

 select str_to_date(date,'%Y%m%d ')            date  日期  varchar    '%Y%m%d ' 转化为日期的格式

二、日期截取年月日:

year(日期) as ayear    表示 截取月月日中的年

三、补全日期,比如1月 改成01月 9日改为09日  即单数的月,日要补0:

LPAD(参数,长度,补什么)可以在截取的单数日期比如8补为08

四、核心知识点---- 查询出当天以外的数据:

select xxx from 表名 where 日期 < date_sub(now(),INTERVAL 1 day)

date_sub(now(),INTERVAL 1 day)   1 表示的日期是前一天      0 表示当天  now() 现在的时间戳

五、保留小数点后两位:

Double avg = 23.375

(double) Math.round(avg * 100) / 100    结果 为 23.38

关于小数点保留问题 参考文献 Java中Double保留后小数位的几种方法 - 的川 - 博客园

标签:m%,Y%,日期,str,Mysql,date,格式,data,前一天
来源: https://blog.csdn.net/m0_60660777/article/details/122448788

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有