问题描述
嗨,汤姆
我面临一个简单的查询的麻烦。
基本上,我在这里的最终目标是清除2年以上的数据的几个表 (我在purge_table_list表中提到过)。
我已将所有分区重命名为最后7个字符的格式,例如 “JAN2014”,“feb2015” 等。
在下面的SQL中,我试图获取我想要删除数据/删除分区的分区名称 (截至今天,数据早于2015年2月14日)。奇怪的是,如果我不选择partition_position列,此查询工作正常。现在,当我选择它时,它会给出 “不是有效的月份” 错误。我也检查了数据。看起来不错。
您能帮我解决这里的问题吗?
选择 * 从
(选择ptl.table_name,
分区名称,
to_date(substr(分区名称,-7),'MONYYYY') as yearmonth,
添加月份 (sysdate,-24) 为purgedate,
partition_position --------------- 如果我删除此列,查询将起作用
从所有表分区atp,清除表列表ptl
其中atp.table_name = ptl.table_name
) abc
哪里
年月 <= purgedate
谢谢
我面临一个简单的查询的麻烦。
基本上,我在这里的最终目标是清除2年以上的数据的几个表 (我在purge_table_list表中提到过)。
我已将所有分区重命名为最后7个字符的格式,例如 “JAN2014”,“feb2015” 等。
在下面的SQL中,我试图获取我想要删除数据/删除分区的分区名称 (截至今天,数据早于2015年2月14日)。奇怪的是,如果我不选择partition_position列,此查询工作正常。现在,当我选择它时,它会给出 “不是有效的月份” 错误。我也检查了数据。看起来不错。
您能帮我解决这里的问题吗?
选择 * 从
(选择ptl.table_name,
分区名称,
to_date(substr(分区名称,-7),'MONYYYY') as yearmonth,
添加月份 (sysdate,-24) 为purgedate,
partition_position --------------- 如果我删除此列,查询将起作用
从所有表分区atp,清除表列表ptl
其中atp.table_name = ptl.table_name
) abc
哪里
年月 <= purgedate
谢谢
专家解答
我要提出一些不同的建议...切勿使用分区名称-风险太大。
在这里看一下我完成的视频,展示了如何使用HIGH_VALUE (这是分区定义的真实定义)
在这里看一下我完成的视频,展示了如何使用HIGH_VALUE (这是分区定义的真实定义)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。