1

日、月、年をパラメーターとして指定して日付を「作成」する Teradata の関数はありますか? SO 整数パラメータ p1_day、p2_month、および p3_year (ちなみに属性) がある場合、次のような関数はありますか?

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

4 に答える 4

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

ディーター

于 2013-06-27T12:11:35.330 に答える
1

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

PS : teradata にはそのような組み込み関数はないようです。

于 2013-06-16T19:55:58.110 に答える
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 年、月の後に日付が続きます。

于 2015-08-18T18:32:00.173 に答える