【发布时间】:2022-01-06 20:48:56
【问题描述】:
在 SQL 查询中,我使用每周分组。但不幸的是,它显示的数据不正确。在新的一年,由于某种原因,设置了错误的周数。 1 月 1 日是 2021 - 52 周(2021-52),但 SQL 认为它是新的 - 2022 年 0 周(2022-00)。 是否可以通过某种检查或日期转换来解决这个问题? (例如,如 php strtotime 'Monday this week')
select
DATE_FORMAT(if(bso.STATUS_ID in ("N", "A", "R", "T", "Z"), if(isnull(bso.comments), "2222-01-01 00:00:01", "2222-01-02 00:00:01"), cast(bso.DATE_INSERT as DATE)), "%d.%m.%Y") as `DATE`,
DATE_FORMAT(STR_TO_DATE(DATE_FORMAT(if(bso.STATUS_ID in ("N", "A", "R", "T", "Z"), if(isnull(bso.comments), "2222-01-01 00:00:01", "2222-01-02 00:00:01"), cast(bso.DATE_INSERT as DATE)), "%d.%m.%Y"), "%d.%m.%Y"), "%Y-%u") as `WEEK`
from `b_sale_basket` bsb
left join b_sale_order bso on bso.ID = bsb.ORDER_ID
left join b_iblock_element bie on bie.id = bsb.PRODUCT_ID
left join b_sale_order_props_value as bsopvs on bsopvs.`ORDER_ID`=bso.`ID` and bsopvs.`CODE`="SOURCE"
where not isnull(bsb.ORDER_ID)
and bso.`DATE_INSERT` >= "2021-12-27 00:00:00" and bso.`DATE_INSERT` <= "2022-01-02 23:59:59"
and bso.`CANCELED`!="Y"
and bie.IBLOCK_ID = 1
group by DATE_FORMAT(STR_TO_DATE(DATE, "%d.%m.%Y"), "%Y-%u")
附: 2222日期是正确的,需要过滤掉,不关注。 我会提前感谢您的提示
【问题讨论】:
-
使用按年(DATE)、WEEK(DATE,n);为n 阅读:mariadb.com/kb/en/week
标签: mysql