宣告為 vPracownik.zatrudniony 的記錄中的列采用如下格式12/31/1967, 11:00:00 PM。我希望它是 DATEPART(dw, vPracownik.zatrudniony) 的引數。它拋出一個錯誤:
ORA-06550: line 11, column 13: PLS-00201。
所有代碼如下所示:
DECLARE
CURSOR cPracownicy IS
SELECT *
FROM Pracownicy
FOR UPDATE;
vPracownik Pracownicy%ROWTYPE;
BEGIN
FOR vPracownik IN cPracownicy LOOP
IF (DATEPART(dw, vPracownik.zatrudniony) = 2) THEN
UPDATE Pracownicy
SET placa_pod = 1.2 * placa_pod
WHERE CURRENT OF cPracownicy;
DBMS_OUTPUT.PUT_LINE(
vPracownik.nazwisko ||
vPracownik.placa_pod
);
END IF;
END LOOP;
END;
我也試過((SELECT TO_CHAR(DATE(vPracownik.zatrudniony), 'MM/dd/yyyy', 'DAY') FROM DUAL) = 'MONDAY')在 IF 陳述句中使用。如何從日期正確檢索日期?
uj5u.com熱心網友回復:
首先將字串轉換為有效的日期值,然后對其應用to_char- 使用所需的格式掩碼 - 以檢索日期名稱。
像這樣的東西:
SQL> with test (col) as
2 (select '12/31/1967, 11:00:00 PM' from dual)
3 select
4 to_date(col, 'mm/dd/yyyy, hh:mi:ss am') val_date,
5 to_char(to_date(col, 'mm/dd/yyyy, hh:mi:ss am'), 'Day', 'nls_date_language = english') val_day
6 from test;
VAL_DATE VAL_DAY
------------------- ---------
31.12.1967 23:00:00 Sunday
SQL>
什么是DATEPART應該是什么?據我所知,沒有這樣的內置功能......
uj5u.com熱心網友回復:
從谷歌翻譯,“Pracownik zatrudniony”類似于“員工雇傭日期”——這是真的嗎?
在 Linux 中檢查:
$ d="12/31/1967"
$ date -d $(echo $d|awk -F/ '{print $3 "/" $1 "/" $2}') %A # DOW
Sunday
在 Oracle 中檢查:
SYS@ORCL19C> select to_char( to_date( '12/31/1967, 11:00:00 PM', 'MM/DD/YYYY, HH12:MI:SS AM'), 'DAY') day_of_hire from dual;
DAY_OF_HIRE
-----------
SUNDAY
SYS@ORCL19C> set serveroutput on
SYS@ORCL19C> BEGIN
2 IF rTRIM( to_char( to_date( '12/31/1967, 11:00:00 PM', 'MM/DD/YYYY, HH12:MI:SS AM'), 'DAY')) = 'SUNDAY' THEN
3 dbms_output.put_line('This person was hired on a Sunday!');
4 ELSE
5 dbms_output.put_line('Not on a Sunday');
6 END IF;
7 END;
8 /
This person was hired on a Sunday!
PL/SQL procedure successfully completed.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/342517.html
上一篇:時區:有沒有辦法在Python中用日期時間列印GMT(格林威治標準時間)?
下一篇:將日期字串轉換為日期時間C#
