gpt4 book ai didi

sql - 每个月的 CHAR/VARCHAR2 数据类型的范围分区

转载 作者:行者123 更新时间:2023-12-05 03:40:35 29 4
gpt4 key购买 nike

我们有一个表,我们试图在其中为每个月创建一个基于 CHAR 数据类型的 RANGE 分区,如下所述。但是我们收到错误。ACC_DATE 值将类似于“202010”。这在ORACLE中可以完成吗?因为在 DB2 中也可以这样做。但是我们必须在ORACLE中实现它。

我们得到的错误:

ORA-14751: Invalid data type for partitioning column of an interval partitioned table

CREATE TABLE T_ACCOUNT_PARTITION
(
V_ACCOUNT_NUM VARCHAR2(100 CHAR),
V_ACCOUNT_NAME VARCHAR2(200 CHAR),
ACC_DATE CHAR(6)
)
PARTITION BY RANGE (ACC_DATE) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
(PARTITION P_MAY2021 VALUES LESS THAN (202105));

最佳答案

如前所述,您永远不应将日期或时间值存储为字符串,始终使用正确的 DATETIMESTAMP 数据类型。

作为解决方法,您可以像这样使用 VIRTUAL 列:

CREATE TABLE T_ACCOUNT_PARTITION
(
V_ACCOUNT_NUM VARCHAR2(100 CHAR),
V_ACCOUNT_NAME VARCHAR2(200 CHAR),
ACC_DATE CHAR(6),
PARTITION_KEY TIMESTAMP(0) GENERATED ALWAYS AS (TO_TIMESTAMP(ACC_DATE, 'YYYYMM')),

)
PARTITION BY RANGE (PARTITION_KEY) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
(PARTITION P_MAY2021 VALUES LESS THAN (TIMESTAMP '2021-05-01 00:00:00'));

关于sql - 每个月的 CHAR/VARCHAR2 数据类型的范围分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68064402/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com