我有一个数据库(不是我的),我需要从中提取日期并将其放入另一个数据库(我的),并为日,周和月分别设置列。在原始数据库中,它看起来像05-APR-10,但我不能让它出现在单独的列中。
这是我到目前为止所做的:
CREATE TABLE Seasontime (
Seasontime number(2) PRIMARY KEY,
Month number(2) NOT NULL,
Week number(2) NOT NULL,
Day number(2) NOT NULL);
CREATE SEQUENCE Seasontime_Seq
START WITH 0
INCREMENT BY 1
MINVALUE 0
NOCACHE
NOCYCLE;
insert into Seasontime
select Seasontime_seq.nextval,
Month,
Week,
Day
from (
select extract(Month from PDate) as Month,
extract(Week from PDate) as Week,
extract(Day from PDate) as Day
From notmydatabase.performance
);
最后一点不起作用,所以如果有人能帮助我那将是伟大的 提前致谢
答案 0 :(得分:1)
WEEK
不是the extract()
function的有效字段。您需要使用to_char()
来获取周数:
select Seasontime_seq.nextval,
Month,
Week,
Day
from (
select extract(Month from PDate) as Month,
to_number(to_char(PDate, 'WW')) as Week,
extract(Day from PDate) as Day
From notmydatabase.performance
);
对于其他字段,您可能更愿意使用to_char()
而不是extract()
来保持一致性。您可能还需要ISO周号,您可以使用the 'IW'
date format element代替'WW'
。
或者,如果你想要一周中的一周而不是一年中的一周,那么只需'W'
;但这也许表明你想要一周中的某一天,而不是extract()
给你的那一天。
答案 1 :(得分:0)
您无法使用extract
从日期列中获取一周。请尝试使用to_char:
insert into Seasontime
select Seasontime_seq.nextval,
Month,
Week,
Day
from (
select to_char(PDate, 'mm') as Month,
to_char(PDate, 'WW) as Week,
to_char(PDate, 'dd') as Day
From notmydatabase.performance
);