我有一个带有 Oracle 数据库的 Spring Boot 项目。我在数据库中插入了以下脚本
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"
}
答案 0 :(得分:1)
使用正确的日期文字:
insert into SEMESTER (SEMESTREID, CODE, ENDDATE, STARTDATE)
values (103, 1, date '2021-12-13', date '2022-09-06');
请注意,我删除了 '103'
和 '1'
周围的单引号。它们看起来像数字,所以插入数字。如果它们确实是字符串,请使用单引号。
答案 1 :(得分:0)
当格式掩码需要 4 位数年份时,您已要求它转换 2 位数年份:
TO_DATE('13-DEC-21','dd/MM/yyyy')
这意味着它将值转换为公元 21 年 12 月 13 日(公元 1 世纪)。
swagger 的输出正确显示了您告诉它输入的日期。
将输入脚本修正为:
将格式模型与输入匹配并在年份上使用 2 位掩码:
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'
);