mysql删除上半年的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql删除上半年的数据相关的知识,希望对你有一定的参考价值。

参考技术A 题主是否想询问“mysql怎么删除上半年的数据”?BETWEEN关键字。DELETEFROM表名WHERE时间字段BETWEEN开始时间AND结束时间,mysql可以使用BETWEEN关键字删除上半年的数据。MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。

如何将MySQL表数据汇总半年?

有人可以帮我写一个MySQL查询来根据半年的数据划分数据,这些数据的日期格式有列吗?

我按月和季度编写了GROUP的查询,但半年没有发生。

我每周,每月和每季度使用以下查询:

CREATE view darren_inventory_mrp_forecast_summary as
    ( SELECT row_number() OVER(ORDER BY sub.product_id) as id,
             SUM(sub.quantity)/12 as quantity,
             SUM(sub2.quantity)/4 as quarterly,
             SUM(sub3.quantity)/51 as weekly,
             sub.product_id as product_id FROM
          (SELECT row_number() OVER(ORDER BY product_id) as id,
                  product_id as product_id,
                  SUM(product_qty) as quantity
          FROM stock_move
          WHERE consumed_for IS NOT NULL
          GROUP BY to_char(DATE(create_date), 'YYYY-MM'), product_id 
          ) 
      as sub 
      LEFT JOIN 
          (SELECT row_number() OVER(ORDER BY product_id) as id,
                  product_id as product_id,
                  SUM(product_qty) as quantity
          FROM stock_move
          WHERE consumed_for IS NOT NULL
          GROUP BY to_char(DATE(create_date), 'YYYY-Q'), product_id 
          ) 
      as sub2 on (sub2.product_id=sub.product_id)  
      LEFT JOIN
          (SELECT row_number() OVER(ORDER BY product_id) as id,
                  product_id as product_id,
                  SUM(product_qty) as quantity
          FROM stock_move
          WHERE consumed_for IS NOT NULL
          GROUP BY to_char(DATE(create_date), 'YYYY-WW'), product_id 
          ) 
      as sub3 on (sub3.product_id=sub.product_id)  
      GROUP BY sub.product_id
    )
答案

您可以使用此获取日期项目的月份的第一天。

select last_day(datecolumn) + interval 1 day - interval 1 month 

您可以使用此获取日期项目的年份

select month(datecolumn)

您可以像这样获得半年(0-5)的月数

select (month(datecolumn) -1) mod 6

所以,你可以像这样得到半年的第一天。

select last_day(datecolumn) + interval 1 day - interval 1 month
        - interval (month(datecolumn) -1) mod 6 month

然后你可以通过GROUP BY这个大表达式来汇总你的数据。

这也有效:

select last_day(datecolumn) + interval 1 day - interval 1 month
      - interval (quarter(datecolumn) -1) mod 2 quarter

诀窍是提出一个表达式,将任何日期时间表达式截断到它所在的半年的第一天。

如果你想处理特定年份的东西,做这样的事情。

  WHERE datecolumn >= DATE_FORMAT(NOW(), '%y-01-01') - INTERVAL 1 YEAR
    AND datecolumn >  DATE_FORMAT(NOW(), '%y-01-01') + INTERVAL 1 YEAR

此特定示例选择2015和2016日历年中的所有内容。表达式DATE_FORMAT(someTimestampValue, '%y-01-01')将日期或日期时间值截断到日历年的开头。

另一答案

MySql中没有half_year函数,但您可以从季度计算: floor(quarter(date_column)/ 3)这一个返回0表示1,2个季度,1表示3,4个季度。

所以按半年分组:

GROUP BY year(date_column) + 0.1 * floor(quarter(date_column) / 3)

以上是关于mysql删除上半年的数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL按天/周/月/季度/半年/年统计数据

mysql中怎么查询一周内,三个月内,半年内的数据?

mysql查询近半年每个月的总记录数

2018 年上半年(软师)下午题答案及解析

(2020上半年第7天)小迪网络安全笔记(操作③)Mysql注入中的权限问题

2017下半年计划