日期格式不正确

68bkxrlz  于 2021-07-16  发布在  Java
关注(0)|答案(2)|浏览(507)

我有一个spring-boot项目和一个oracle数据库。我有下面的脚本,我在数据库中插入

insert into SEMESTER (SEMESTREID, CODE, ENDDATE, STARTDATE) values ('103', '1', TO_DATE('13-DEC-21','dd/MM/yyyy'), TO_DATE('06-SEP-22','dd/MM/yyyy'));

当我从swagger得到数据时,我注意到日期不正确,它返回0022而不是2022。

{
    "semestreId": "103",
    "code": "1",
    "startDate": "0022-09-06",
    "endDate": "0021-12-13"
}
huwehgph

huwehgph1#

使用适当的日期文字:

insert into SEMESTER (SEMESTREID, CODE, ENDDATE, STARTDATE)
    values (103, 1, date '2021-12-13', date '2022-09-06');

注意,我删除了单引号 '103' 以及 '1' . 它们看起来像数字,所以插入数字。如果它们真的是字符串,请使用单引号。

8yparm6h

8yparm6h2#

当格式掩码预期为4位年份时,您要求它转换为2位年份:

TO_DATE('13-DEC-21','dd/MM/yyyy')

这意味着它正在将价值转换为公元12月13日至21日(公元1世纪)。
swagger的输出正确地显示了您让它输入的日期。
将输入脚本修复为:
将格式模型与输入匹配,并在年份上使用两位数掩码:

insert into SEMESTER (
  SEMESTREID, CODE, ENDDATE, STARTDATE
) values (
  103, 1, TO_DATE('13-DEC-21','DD/MON/YY'), TO_DATE('06-SEP-22','DD/MON/YY')
);

将输入与格式模型匹配使用4位数年份:

insert into SEMESTER (
  SEMESTREID, CODE, ENDDATE, STARTDATE
) values (
  103, 1, TO_DATE('13-DEC-2021','DD/MON/YYYY'), TO_DATE('06-SEP-2022','DD/MON/YYYY')
);

使用日期文字:

insert into SEMESTER (
  SEMESTREID, CODE, ENDDATE, STARTDATE
) values (
  103, 1, DATE '2021-12-13', DATE '2022-09-06'
);

相关问题