SQLite如何将日期格式化为季度

2022-03-16 00:00:00 日期 订单 除以 订购 季度

说明:sqlite不支持将日期格式化为季度,需要先格式化为月份,再将月份转化为季度

示例语句:
SELECT FLOOR(STRFTIME('%m',A."订购日期")/3.0+0.7) AS 季度
,SUM(B."单价"*B."数量") 销售额
FROM "订单" A
LEFT JOIN "订单明细" B ON A."订单ID" = B."订单ID"
GROUP BY FLOOR(STRFTIME('%m',A."订购日期")/3.0+0.7)


结果:


解释 FLOOR(STRFTIME('%m',A."订购日期")/3.0+0.7):

1)STRFTIME('%m',A."订购日期") -- 将日期格式化为月份


2)STRFTIME('%m',A."订购日期")/3.0 --用月份除以3.0

(*除以3.0与除以3不同,除以3的结果是四舍五入为整数,除以3.0的结果为小数、且结果如果为整数则用0补充一位小数)


3)STRFTIME('%m',A."订购日期")/3.0+0.7 -- +0.7是为了将第2)步的结果放大后再向下取整

在第2)步的结果中,3、6、9、12这四个月份除以3.0的结果就可以当作季度了,而其他月份则还需要进一步处理。以1月和2月为例:1月第2)步的结果为0.3333333333,0.33+0.7=1.03,1.03再向下取整为1即可作为季度的值;2月第2)步的结果为0.666666666,0.66+0.7=1.36,1.36向下取整也是1,也可以作为季度的值


4)FLOOR(STRFTIME('%m',A."订购日期")/3.0+0.7) --向下取整

5)完成

来源 https://zhuanlan.zhihu.com/p/468490440

相关文章