现有数据格式为
-- 原始数据
period_wid num
20190625 30
20190624 33
20190621 31
20190620 21
-- 目标数据格式
period_wid num last_num
20190625 30 33
20190624 33 31
20190621 31 21
20190620 21
取得前一天:
yyyyMMdd类型的值转日期
date_format(period_wid,'%Y-%m-%d') , '20190625' 转换成了 2019-06-25
yy-MM-dd如何转换为yyyyMMdd
replace(date,'-',''); 把日期里面的-替换掉就行了
-- 获取当前日期在上周的周四
SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')+3)
-- 获取当前日期在本周的五
SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-5)
DATE_SUB() 函数从日期减去指定的时间间隔。
CURDATE() 函数获得当前的年月日日期
%w 一个星期中的天数(0=Sunday ……6=Saturday )
-- period_wid 20190625
SELECT
PERIOD_WID
,I_T
,I_T2
,SUM(MICE) AS MKT_PRICE
,SUM(LICE) AS LAST_MKT_PRICE
FROM(
SELECT
PERIOD_WID
,I_T
,I_TE2
,MKT_PRICE
,0 AS LAST_MKT_PRICE
FROM AA.BBBBB
UNION ALL
SELECT
replace(
CASE WHEN (weekday(date_format(period_wid,'%Y-%m-%d'))+1)%7 = 1 --如果是本周一
--取上周五
THEN subdate(date_format(period_wid,'%Y-%m-%d'),date_format(date_format(period_wid,'%Y-%m-%d'),'%w')-2)
ELSE date_sub(date_format(period_wid,'%Y-%m-%d'),interval -1 day) --否则取昨天
END,'-','') AS PERIOD_WID
,I_T
,I_T2
,0 AS MKT_PRICE
, MKT_PRICE AS LAST_MKT_PRICE
FROM AA.BBBB) F
GROUP BY
PERIOD_WID
,ITEM_TYPE
,ITEM_TYPE2 ORDER BY PERIOD_WID DESC
本文详细介绍日期格式的转换方法,包括将yyyyMMdd类型的数据转换为日期格式,再将其转换回yyyyMMdd格式,以及如何通过SQL语句获取特定日期,如上周四和本周五。此外,还提供了复杂的SQL查询示例,用于基于日期进行数据聚合。

被折叠的 条评论
为什么被折叠?



