我想将列名转换为日期。例如列名是今天,我想将它动态转换为今天的日期,如 MM/DD/YYYY 。
问问题
1132 次
2 回答
2
截至目前,列名是“今天”我希望它是当前日期
您不能将列配置为自动更改其名称。反映当天或其他任何情况。
但是,您可以在查询时使用别名来更改列名。为了使事情尽可能透明,您可能需要创建一个视图。这是一个例子:
-- Some table with a column named "TODAY"
CREATE TABLE T AS (SELECT LEVEL today FROM DUAL CONNECT BY LEVEL < 5);
-- Use PL/SQL to create a view on the given table
-- with a dynamic column name
DECLARE
today varchar(10) := TO_CHAR(SYSDATE,'DD/MM/YYYY');
query varchar(200) := 'CREATE OR REPLACE VIEW V'
|| ' AS SELECT today "' || today || '"'
|| ' FROM T';
BEGIN
execute immediate query;
END;
然后,要使用正确的列名查询“表” ,您只需查询V
而不是T
:
SELECT * FROM V;
12/12/2014
1
2
3
4
如果您每天重新创建视图,例如通过从作业调用上述 PL/SQL 代码,您将每天看到以当前日期作为列名的视图。但是,由于基础表保持不变,您仍然可以使用规范名称查询它today
。例如,如果您需要对该表执行联接,这很重要。
话虽如此,我不确定我是否会推动这样的解决方案。使用风险自负!
于 2014-12-12T22:49:38.437 回答
1
如果您希望列名称标题显示为不同于表中定义的列名称,您只需使用该as "DisplayColumnName"
列的子句:
select user_name, today as "12/12/2014" from some_table;
但是您需要以编程方式生成 SQL 语句才能使其正常工作。您使用的编码环境将决定如何动态创建选择语句。
于 2014-12-12T22:47:42.300 回答