投稿の下のすべてのコメントは、任意の数値を現在の日付に変換することはできないと述べています。番号の形式が何であるかを知る必要があります。以下は、列を追加してすべての数値を変換するプロシージャの例ですが、数値が日付をddmmyyyyの形式で格納するという条件に基づいています。たとえば、12102014は2014年10月12日の日付を与えます。
create or replace procedure columns_change(t_name in varchar2) as
col varchar2(30);
begin
for x in (select column_name from all_tab_columns where table_name = t_name and data_type in ('NUMBER'/*add whatever you need*/)) loop
col := x.column_name;
if (length(col)> 29) then --that's to avoid extending name to more than 30 characters
col := substr(col,1,29);
end if;
execute immediate 'alter table ' || t_name || ' add d' || col || ' date';
execute immediate 'update ' || t_name || ' set ' || col || ' = to_date(' || x.column_name || ',''ddmmyyyy'')';
end loop;
end;
Huh?これらの列はすべて空ですか?そうでない場合、-200のような数字をどのようにして日付に変換しますか?または、私たちと共有する必要がある詳細がありますか? – mathguy
Oracleには「bignumber」はありません。そして私はmathguyに同意します。あなたはどのように-42、1e123のような数字を日付に変換しますか? –
実際、私は知らない。私の大学にはこの素晴らしい仕事があります。私はこれらの列が空ではないと思っています。また、NULL以外の値をDATE形式に変換することも考えました。これのようなものかもしれないhttp://stackoverflow.com/questions/11883923/converting-number-to-date-in-oracle – b00blik