-1

关于为什么以下行抱怨 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;

4

2 回答 2

2

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

另一种选择是使用提取功能

IF extract(year from v_ExpireTime) = 1899 THEN ...
于 2012-08-28T09:21:21.567 回答
1

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

于 2012-08-28T09:17:09.217 回答