PostGresql工作中一条复杂SQL解析
业务背景
根据订单表,统计最近7天付费用户数,并格式化查询的日期字段(例子:05/01
)。
订单表结构
下面为订单表的结构,由于比较简单去掉了不需要的字段、索引、备注等。
CREATE TABLE "public"."tbl_order" (
"id" int8 NOT NULL,
"order_no" varchar(60) COLLATE "pg_catalog"."default",
"user_id" varchar(100) COLLATE "pg_catalog"."default",
"pay_time" timestamp(6),
"order_status" int2 NOT NULL
);
实现SQL
当前日期是2020-05-06
(不包含当天),因此最近7天就是2020-04-29
到2020-05-05
。
SELECT
REPLACE(
SUBSTRING(to_char(t1.dateOfDay, 'YYYY-MM-DD') FROM 6 FOR 5