You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在动态PL/SQL查询中获取dd/mm/yyyy格式的日期?

动态PL/SQL查询获取dd/mm/yyyy格式出生日期的方法

你当前的代码里to_char(a.dat_of_birth)未指定格式模型,Oracle会采用会话默认的日期格式进行转换,所以无法得到目标的dd/mm/yyyy格式。只需在to_char函数中添加格式参数即可,修改后的动态SQL如下:

V_DYNAMICSQL := 'select to_char(a.dat_of_birth, ''dd/mm/yyyy'') Date_of_birth
from genmst_customer a';

注意这里的单引号需要转义(用两个连续单引号),因为是在字符串中嵌套单引号。

另外,执行动态查询时需要接收返回结果:

  • 若获取单条记录,可使用INTO子句:
DECLARE
  V_DYNAMICSQL VARCHAR2(200);
  V_BIRTH_DATE VARCHAR2(10);
BEGIN
  V_DYNAMICSQL := 'select to_char(a.dat_of_birth, ''dd/mm/yyyy'') Date_of_birth
from genmst_customer a
where a.customer_id = :1'; -- 假设通过ID筛选单条记录
  Execute immediate v_dynamicsql INTO V_BIRTH_DATE USING 123; -- 替换为实际客户ID
  DBMS_OUTPUT.PUT_LINE('出生日期: ' || V_BIRTH_DATE);
END;
/
  • 若获取多条记录,可使用BULK COLLECT INTO批量收集到集合中:
DECLARE
  TYPE DATE_LIST IS TABLE OF VARCHAR2(10);
  V_DYNAMICSQL VARCHAR2(200);
  V_BIRTH_DATES DATE_LIST;
BEGIN
  V_DYNAMICSQL := 'select to_char(a.dat_of_birth, ''dd/mm/yyyy'') Date_of_birth
from genmst_customer a';
  Execute immediate v_dynamicsql BULK COLLECT INTO V_BIRTH_DATES;
  -- 遍历输出结果
  FOR i IN V_BIRTH_DATES.FIRST .. V_BIRTH_DATES.LAST LOOP
    DBMS_OUTPUT.PUT_LINE('第' || i || '条记录出生日期: ' || V_BIRTH_DATES(i));
  END LOOP;
END;
/

内容的提问来源于stack exchange,提问作者Vamshikrishna Mergu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 04:15:57