【问题标题】:Date Function in TeradataTeradata 中的日期函数
【发布时间】:2015-08-19 02:32:00
【问题描述】:

Teradata 中是否有一个函数,通过将日期、月份和年份作为参数来“生成”日期? 因此,如果我有整数参数 p1_day、p2_month 和 p3_year(顺便说一下,它们是属性),是否有类似

的函数
date_function (p1_day, p2_month, and p3_year) -> for example '2013-12-11'

【问题讨论】:

  • 您是否询问如何使用 SQL 将三个整数列(年、月、日)转换为日期列您是否询问如何格式化来自外部应用程序的参数变成“日期”常量?

标签: teradata


【解决方案1】:

在 TD13.10+ 中,您可以创建一个简单的 SQL UDF:

-- (year, month, day) to date, "invalid date" error if no valid date
REPLACE FUNCTION ymd_to_date(y INTEGER, m INTEGER, d INTEGER)
RETURNS DATE
SPECIFIC ymd_to_date
RETURNS NULL ON NULL INPUT
CONTAINS SQL
DETERMINISTIC
COLLATION INVOKER
INLINE TYPE 1
RETURN 
   ((y - 1900) * 10000 + (m * 100) + d (DATE))

节食

【讨论】:

    【解决方案2】:

    teradata 中的一个例子:

     BTEQ -- Enter your SQL request or BTEQ command:
    sel cast ('11'||'-'||'12'||'-'||'12' as date format 'dd-mm-yy');
    
    sel cast ('11'||'-'||'12'||'-'||'12' as date format 'dd-mm-yy');
    
     *** Query completed. One row found. One column returned.
     *** Total elapsed time was 1 second.
    
    (((('11'||'-')||'12')||'-')||'12')
    ----------------------------------
                              11-12-12
    

    所以您可以通过以下查询简单地实现您想要的结果:

    sel cast (cast(p1_day as char(2))||'-'||cast(p2_month as char(2))||'-'||
    cast(p3_year as char(2)) as date format 'dd-mm-yy');
    

    附: : teradata 中似乎没有这样的内置函数。

    【讨论】:

      【解决方案3】:

      据我所知,没有预定义的日期函数可以传递整数并返回日期.. 但是你可以写你知道 UDF..

      【讨论】:

      • 另一种方法是使用强制转换函数 CAST('16/06/2013' AS DATE FORMAT 'DD-MM-YYYY')
      【解决方案4】:

      要添加到 Deiter 的函数,请查看以下查询。 Teradata 将日期存储为具有 1900 年偏移量的整数。

         SELECT CAST(CURRENT_DATE AS INTEGER);
      
          ---- 1150818
      
          SELECT CURRENT_DATE;
      
          --- 2015-08-18
      
      ---- the format of storage is (<year> - 1900)mmdd
          SELECT (2015 -1900)*100000 + (8 * 100)+ 18;
      
          ------ 1150818
      

      从 1900 年开始的 115 年,月份之后是日期。

      【讨论】:

        猜你喜欢
        • 2020-03-09
        • 2014-11-10
        • 2015-01-10
        • 2021-10-23
        • 2021-10-18
        • 2015-10-15
        • 1970-01-01
        • 2014-04-26
        相关资源
        最近更新 更多