Teradata 输入日期超出业务日历范围

问题描述 投票:0回答:3

给定一个表:

Table : Dates
INSERTION_DATE
10/12/2016
14/10/2106

当我运行提取每个日期的年份周数的查询时:

SELECT TD_SYSFNLIB.WEEKNUMBER_OF_YEAR(INSERTION_DATE) FROM DB.DATES

我遇到了这个异常:

SELECT Failes [9134] Input date is out of business calendar boundaries.

这是因为 Teradata 似乎不喜欢在未来的日期中使用这个库(14/10/2106),但我想为我的用例做一个解决方法,即获取给定日期的一年中的周数。

谢谢

sql teradata
3个回答
1
投票

Teradata 中的日期函数与业务日历无关,这可以为您提供更大的灵活性。它们在 TD 13.x 中引入,并在 TD 14.x 中重命名。它们以 TD_ 开头,在您的实例中,TD_Week_Number_Of_Year 会作为候选者出现在您的脑海中。

业务日历仅限于 1/1/1900 至 12/31/2100 之间的日期。


0
投票

@will 您可以尝试以下操作:

select to_char(INSERTION_DATE,'iyyyiw')

摘自@dnoeth 的帖子。

https://forums.teradata.com/forum/database/getting-week-of-the-year-from-a-date


-1
投票

该函数需要一个日期作为参数。默认情况下,上述值不会转换为日期。 尝试显式转换(或更改表中的类型

dates

create volatile table dates  ( INSERTION_DATE char(10) ) on commit preserve rows;
insert into dates values ( '10/12/2016' );
insert into dates values ( '14/12/2016' );
SELECT
TD_SYSFNLIB.WEEKNUMBER_OF_YEAR(cast(INSERTION_DATE as date format 'DD/MM/YYYY'))
FROM DATES;
WEEKNUMBER_OF_YEAR(INSERTION_DATE,'TERADATA')
---------------------------------------------
                                           50
                                           49
© www.soinside.com 2019 - 2024. All rights reserved.