【问题标题】:convert from teradata to oracle从 teradata 转换为 oracle
【发布时间】:2020-08-05 20:55:04
【问题描述】:

请帮助我将以下用 teradata 编写的查询转换为 oracle sql。

SELECT cast((substr( CAST(CURRENT_TIMESTAMP(0) AS varchar(19)), 1,4) as decimal(18,0)) as termid from source1

【问题讨论】:

  • SO 不是免费的代码转换服务。制作一个 elfor 自己进行转换。当您这样做并遇到问题时,您可以解释该问题,添加旧代码和您的代码的相关部分,并提出与该代码相关的特定问题,我们可以尝试提供帮助。如果您花一些时间在tour 和阅读help center 页面以了解该网站的运作方式以及我们的期望,然后再开始发布,您会发现您在这里的体验会好得多。
  • 似乎是一个简单的extract(year from current_timestamp),可在 Teradata 和 Oracle 中使用

标签: sql oracle teradata


【解决方案1】:

你必须明确使用带有时间戳的 to_char,因为时间戳格式可以包含单词

  SELECT cast(substr( to_char(current_timestamp(0),'DDMM'), 1,4) 
  as decimal(18,0)) as termid from dual

【讨论】:

  • SELECT cast(substr( to_char(current_timestamp(0),'YYYY-MM-DD HH:MI:SS'), 1,4) as number(18,0)) as termid from dual .谢谢@psaraj12
  • @Ali 使用长格式字符串没有意义,然后使用 substr 删除年份。只需使用格式字符串'YYYY'
【解决方案2】:

如果你想要当前年份,这将在 Oracle 中完成:

select to_char(Current_Timestamp(0),'YYYY') termid from dual;

【讨论】:

    【解决方案3】:

    您当前的计算将年份提取为数值。在 Teradata 和 Oracle 中,这可以很容易地使用

    extract(year from current_timestamp)
    

    【讨论】:

      猜你喜欢
      • 2016-04-10
      • 2016-10-06
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 2017-07-02
      • 2011-04-03
      • 1970-01-01
      • 2018-10-03
      相关资源
      最近更新 更多