Ice-Blue-sky 2021-11-01 23:31 采纳率: 66.7%
浏览 23
已结题

日期变换,只写月和日,为什么还显示年

建表:

--建立订单表
create table orderf(
orderno number,--订单号
oname varchar2(20),--客户名
price number(7,2),--总价
deadline date,--预定日期
delivery date,--交付日期
clauseNo varchar2(20),--条款号
product varchar2(20)--产品名
);
--插入数据
insert into orderf values(612,'BLAKE',5860,to_date('10-1月','dd-mon'),to_date('11-1月','dd-mon'),'1.2.3','IPHONE');
insert into orderf values(610,'BOB',101.4,to_date('10-1月','dd-mon'),to_date('20-1月','dd-mon'),'2.3','SHOSE');
insert into orderf values(601,'CLARK',60.8,to_date('01-5月','dd-mon'),to_date('30-5月','dd-mon'),'1.3','CUP');
insert into orderf values(600,'ANNE',42,to_date('12-3月','dd-mon'),to_date('19-2月','dd-mon'),'1','ACE TENNIS RACKET II');
insert into orderf values(600,'LISA',58,to_date('17-3月','dd-mon'),to_date('29-3月','dd-mon'),'2','ACR TENNIS NET');
insert into orderf values(600,'PETER',24.6,to_date('01-5月','dd-mon'),to_date('29-5月','dd-mon'),'1.5.3','PEN');
insert into orderf values(612,'BLAKE',1.5,to_date('12-1月','dd-mon'),to_date('15-1月','dd-mon'),'1.2.4','CARD');
insert into orderf values(610,'BOB',2.0,to_date('16-1月','dd-mon'),to_date('19-1月','dd-mon'),'2.4','BREAD');
insert into orderf values(601,'CLARK',6.8,to_date('01-5月','dd-mon'),to_date('10-5月','dd-mon'),'1.4','NOEBOOK');
select * from orderf;

表:

img


题目:

img


我的代码:

declare
cursor test2 is select orderno,deadline,delivery from orderf where (delivery-deadline)>15;
o_no orderf.orderno%type;
o_deadline orderf.deadline%type;
o_delivery orderf.delivery%type;
begin
  for orderf in test2 loop
    o_no:=orderf.orderno;
    o_deadline:=orderf.deadline;
    o_delivery:=orderf.deadline+15;
    update orderf set delivery=o_delivery where orderno=o_no;
    dbms_output.put_line('订单号:'||o_no||',预定日期:'||o_deadline||',交付日期:'||o_delivery);
  end loop;
end;

运行结果:

img

问题:为什么日期的显示在建表和填充数据后还是yy/mm/dd格式,使用游标运行代码后,像上图那样,后面还跟 -21

  • 写回答

2条回答 默认 最新

  • 唯一的小彬哥 2021-11-04 10:32
    关注

    我给你仔细讲一下date吧,它是一种定长数据类型的占7字节,意味着你不管写入什么数据,最终都是占7位。所以你看到的仍然是年月日的形式。
    然后为什么会显示这样的模式呢?因为它显示的时候进行了格式化。受参数NLS_DATE_FORMAT控制。如果你要改变显示格式,要么改这个参数,要么进行to_char进行显式的格式化。

    另外不要受人误导,日期存储就该用日期,不要进行转换为字符。否则你不仅处理麻烦,实际使用时还额外多了一到两个转换,浪费资源。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 已采纳回答 11月4日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测