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 PointNet++的onnx模型只能使用一次
  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。