【问题标题】:Converting records from 'YYYY-MM-DD' format to MM/DD/YYYY in PL/SQL在 PL/SQL 中将记录从 'YYYY-MM-DD' 格式转换为 MM/DD/YYYY
【发布时间】:2019-03-24 00:37:53
【问题描述】:

我正在尝试转换格式为 'YYYY-MM-DD' 的指定列,我需要将其转换为 MM/DD/YYYY数据仓库任务。

指定的列是varchar2格式。

我一直在尝试使用 to_date、to_char 但还没有成功。有什么想法吗?

【问题讨论】:

  • 当你说转换时,你的意思是从varchar2转换成date数据类型?
  • 到底为什么要将日期存储在varchar 列中?这是一个非常坏主意
  • 抛开将日期存储为文本的问题 - 为什么要将日期从 ISO 8601 格式(可以按日期顺序按字母数字排序)转换为区域格式(这不容易订购)?

标签: sql date oracle11g oracle-data-integrator


【解决方案1】:

我们可以先尝试使用TO_DATE 将您的文本日期转换为真实日期。然后,我们可以使用TO_CHAR 将它们转换为新格式。

UPDATE yourTable
SET date_col = TO_CHAR(TO_DATE(date_col, 'YYYY-MM-DD'), 'MM/DD/YYYY');
-- and maybe a WHERE clause

话虽如此,将日期信息保存为文本是一种不好的做法。相反,如果可能,请使用适当的日期或时间戳列。您最好创建一个新的日期列,然后在调用TO_DATE 后停止。

【讨论】:

    【解决方案2】:

    在你的函数/过程中,你可以试试这个:

    some_var := to_char(to_date(column_to_convert,'YYYY-MM-DD'),'MM/DD/YYYY');
    

    它首先将数据转换为日期,然后使用所需格式转换回 varchar2。只需相应地替换标识符即可。

    【讨论】:

      【解决方案3】:

      这将起作用:

      select to_char(to_date('2018-10-19','YYYY-MM-DD'),'MM/DD/YYYY')from dual;
      

      【讨论】:

      • 这个答案与我几个小时前发布的相同。
      猜你喜欢
      • 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
      相关资源
      最近更新 更多