Teradata中的日期功能

时间:2013-06-15 18:00:14

标签: teradata

在Teradata中是否有一个功能,通过给出任何一天的某一天作为参数来“制造”日期? 所以,如果我有整数参数p1_day,p2_month和p3_year(顺便说一下,属性),有一个像

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

4 个答案:

答案 0 :(得分:4)

在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))

迪特

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

P.S。 :在teradata中似乎没有任何这样的内置函数。

答案 3 :(得分:0)

要添加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年,然后是月份。