【问题标题】:How to write a program to print the wishes based on the sys time?如何编写程序根据 sys 时间打印愿望?
【发布时间】:2025-12-09 03:45:02
【问题描述】:

在 PL/SQL 块中,我想根据输入的系统时间打印“早安”、“中午好”、“晚安”。
如果时间是早上 6 点到下午 12 点,那么它必须打印 GOOD MORNING 否则如果 它位于下午 12 点到下午 2 点之间 它必须打印 GOOD NOON 否则,如果它必须打印 GOOD EVE。所以任何人都可以给我的想法? 提前感谢所有给我指导的人。

【问题讨论】:

  • 请发布您到目前为止所尝试的内容。
  • 在控制结构中使用日期/时间函数
  • @kittykittybangbang Wishes Program:(开始 if to_char(sysdate,'hh24:mm:ss') 在 to_char('08:00:00') 和 to_char(') 之间12:00:00') 然后 dbms_output.put_line('Gud Mrg'); elsif --------其他条件---------- else dbms_output.put_line('Gud Nt'); end if; end; / )_它将按照我的预期给出输出。_

标签: plsql plsqldeveloper


【解决方案1】:

我想,你知道匿名区块长什么样子(提醒如下):

DECLARE
  -- variables' / constants' / types' / etc. declarations
BEGIN
  -- logic
END;
/

您可以按如下方式创建 DATE 变量或常量:

l_in_date <CONSTANT> DATE := TO_DATE(<date>,<date_mask>);

那么就可以使用IF..THEN语句,根据条件打印出结果(http://www.techonthenet.com/oracle/loops/if_then.php):

IF <condition> THEN
  -- logic
ELSIF <condition> THEN
  -- logic
ELSE
  -- logic
END IF;

我相信,您应该能够使用上述信息轻松创建匿名块。

【讨论】:

    【解决方案2】:

    您可以创建一个过程或函数来查看 24 小时格式的时间。

    SELECT TO_CHAR(SYSDATE, HH24:MI:SS') INTO sysDate FROM dual;
    

    这里的sysDate 是24 小时格式的当前时间。
    然后查看时间是否在特定时间跨度内。

    【讨论】:

    • 很酷,非常感谢......我不知道那种 HH Mm Ss 格式......所以现在我有了一个清晰的想法。