我正在研究PL / SQL。同时,我需要比较表中的日期是否是星期五。我应用了下面的代码,但它仍在执行程序的“else”部分。有人可以告诉我这个方法吗?
begin
select dt into dat from ticket_booking where id=1;
dy := to_char(dat, 'DAY');
if dy = to_char('FRIDAY') then
dbms_output.put_line(dy);
else
dbms_output.put_line('didnt print'||dy);
end if;
end;
答案 0 :(得分:2)
而不是DAY
,您需要使用fmDAY
。
begin
select dt into dat from ticket_booking where id=1;
dy := to_char(dat, 'fmDAY');
if dy = to_char('FRIDAY') then
dbms_output.put_line(dy);
else
dbms_output.put_line('didnt print'||dy);
end if;
end;
答案 1 :(得分:2)
只需将'DAY'替换为'Fmday'并繁荣代码运行:)。
DECLARE
dat DATE;
dy VARCHAR2(100);
BEGIN
SELECT dt INTO dat FROM ticket_booking WHERE id=1;
dy := TO_CHAR(dat, 'fmDAY');
IF dy = TO_CHAR('FRIDAY') THEN
dbms_output.put_line(dy);
ELSE
dbms_output.put_line('didnt print'||dy);
END IF;
END;
/
答案 2 :(得分:2)
如上所述,我可以补充一下,如果你不想使用字符串比较,可以这样做 比较
to_char(dat, 'DAY', 'NLS_DATE_LANGUAGE=''numeric date language''')
它就像语言,但是在数字中,星期几从1到7计算,你可以用数值比较结果。