oracle PL/SQL中日期比较的问题[重复]

6qfn3psc  于 2023-05-16  发布在  Oracle
关注(0)|答案(3)|浏览(139)

此问题已在此处有答案

oracle where clause is not working with sysdate [duplicate](2个答案)
Extracting day in Date(4个答案)
6天前关闭。
我正在学习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;
gxwragnw

gxwragnw1#

您需要使用fmDAY而不是DAY

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;
m4pnthwp

m4pnthwp2#

只需将'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;
/
y1aodyip

y1aodyip3#

如上所述,我可以补充,如果你不想使用字符串比较,可以使用这个比较

to_char(dat, 'DAY', 'NLS_DATE_LANGUAGE=''numeric date language''')

它类似于语言,但以数字表示,其中星期从1到7计数,您可以比较数字值结果。

相关问题