-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'))は2桁の値が得られるため、日付の年の部分が1899返されるだけ99の場合は、一致するものは得られません。YYYYの代わりに、4桁の年の日付形式モデルを使用できますYY

別のオプションは、抽出関数を使用することです。

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

私が正しければ、DatePartはPLSQLライブラリの一部ではないため、何をしているのかわかりません。2番目の方法はPLSQL用です。

于 2012-08-28T09:17:09.217 に答える