【问题标题】:convert oracle table column name to MM/DD/YYYY将 oracle 表列名称转换为 MM/DD/YYYY
【发布时间】:2014-12-12 17:36:10
【问题描述】:

我想将列名转换为日期。 例如 列名 是今天,我想将它动态转换为今天的日期,如 MM/DD/YYYY 。

【问题讨论】:

  • 如果列名不是“今天”,你想使用什么日期?
  • 我的问题是:为什么?
  • @MichaelMcGriff 我想使用当前日期作为列名.. 示例:截至目前,列名是“今天”,我希望它是当前日期“2014 年 12 月 12 日”。
  • 我明白了,我只是想你想在未来变得更有活力。我在上面放的链接应该让你知道你需要知道的一切。

标签: oracle date columnname


【解决方案1】:

到目前为止,列名是“今天”,我希望它是当前日期

您不能将列配置为自动更改其名称。反映当天或其他任何情况。

但是,您可以在查询时使用别名来更改列名。为了使事情尽可能透明,您可能需要创建一个视图。这是一个例子:

-- 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;

然后,要使用 right 列名查询“表”,您只需查询 V 而不是 T

SELECT * FROM V;

12/12/2014
1
2
3
4

如果您每天重新创建视图,例如通过从job 调用上述 PL/SQL 代码,您将每天看到以当前日期作为列名的视图。但是,由于基础表保持不变,您仍然可以使用规范名称today 对其进行查询。例如,如果您需要对该表执行联接,这很重要。


话虽如此,我不确定我是否会推动这样的解决方案。使用风险自负!

【讨论】:

    【解决方案2】:

    如果您希望列名标题显示为不同于表中定义的列名,您只需对该列使用as "DisplayColumnName" 子句:

    select user_name, today as "12/12/2014" from some_table;
    

    但您需要以编程方式生成 SQL 语句才能使其正常工作。您使用的编码环境将决定如何动态创建选择语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多