Oracle:必须定义DatePart ......?

时间:2012-08-28 09:04:14

标签: oracle

关于为什么以下行抱怨DATEPART未被定义为标识符的任何想法?

IF DATEPART(v_ExpireTime, year) = 1899 THEN v_ExpireTime := NULL;

它返回: Error(68,10): PLS-00201: identifier 'DATEPART' must be declared

编辑:没关系,我找到了答案。我现在这样做:

IF to_number(to_char(v_ExpireTime, 'YY')) = 1899 THEN v_ExpireTime := NULL;

2 个答案:

答案 0 :(得分:2)

正如您已经发现的那样,DATEPART是SQL Server函数,而不是Oracle函数。您展示的替代方法to_number(to_char(v_ExpireTime, 'YY'))会给您一个两位数的值,所以如果您的日期部分为1899,那么它只会返回99,所以您赢了得到一个匹配。您可以使用四位数年份日期格式模型YYYY代替YY

另一种选择是使用extract function

IF extract(year from v_ExpireTime) = 1899 THEN ...

答案 1 :(得分:1)

如果我是正确的,那是因为DatePart不是PLSQL库的一部分,所以它不知道你在做什么。第二种方法是PLSQL。