在 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")
輸出:

PS 2222 日期是正確的,需要過濾掉,不注意。我會提前感謝你的提示
uj5u.com熱心網友回復:
對于您用于%u周數的日期格式,它確實允許 0。您可以考慮使用%v,但缺點是年份仍將保持 2022 年,因為它是由單獨的%Y說明符生成的。
解決方案是首先將日期轉換為它所在星期的第一天,并格式化該日期。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/404826.html
標籤:
上一篇:Django資料庫存盤問題
