日期格式不正确

时间:2021-03-17 15:01:08

标签: sql spring oracle

我有一个带有 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"
}

2 个答案:

答案 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'
    );