zoukankan      html  css  js  c++  java
  • Mysql按照字段截取查询-比如按照日期查询

    说明

    假如数据库中只有一个时间字段created_at(2021-07-08 21:30:59),这种类型 但是我们
    突然来了一个需求需要统计当月注册人数的统计,还好mysql内置的函数中有一个函数可以实现我们的
    需求SUBSTR()字符截取函数

    参考资料

    名词 地址
    菜鸟教程mysql函数 link

    laravel代码使用示例

    • 数据库
    id pv uv created_at
    1 23 23 2021-08-04 10:29:38
    2 45 365 2021-09-13 10:29:43
    3 32 31 2021-05-12 10:29:46

    sql代码

    SELECT
    	DATE_FORMAT( created_at, '%Y-%m' ) AS date,
    	sum( pv ) AS pv,
    	sum( uv ) AS uv 
    FROM
    	`pv_uv` 
    GROUP BY
    	`date` 
    HAVING
    	date BETWEEN '2021-08' 
    	AND '2021-10' 
    ORDER BY
    	`date` ASC
    
    DB::table('pv_uv')
                ->select(DB::raw("DATE_FORMAT(created_at,'%Y-%m') as date,sum(pv) as pv,sum(uv) as uv"))
                ->groupBy('date')
                ->having('date','2021-01')
    //查询区间
    //->havingBetween('date',[$request->input('start_time'),$request->input('end_time')]) 
                ->get();
    ## 等同于
     $start_time = $request->input('start_time');
            $end_time = $request->input('end_time');
            return DB::table('pv_uv')
                ->select(DB::raw("DATE_FORMAT(created_at,'%Y-%m') as date,sum(pv) as pv,sum(uv) as uv"))
                ->groupBy('date')
                ->when($request->input('start_time') && $request->input('end_time'), function ($query) use ($request) {
                    $start_time = $request->input('start_time');
                    $end_time = $request->input('end_time');
                    $query->havingRaw(DB::raw("date between '$start_time' and '$end_time'"));
                })
                ->get();
    
  • 相关阅读:
    Pyechart——学习
    matplotlib——散点图、条形图、直方图
    matplotlib——折线图
    寻找n以内的亲密数对
    Golang判断时间点处于今天
    寒假作业3
    寒假作业2
    面向对象程序设计寒假作业1
    自我介绍
    关于cve2019_0708的反弹shell
  • 原文地址:https://www.cnblogs.com/yaoliuyang/p/15207967.html
Copyright © 2011-2022 走看看