Oracle max函数返回min

58wvjzkj  于 2023-04-05  发布在  Oracle
关注(0)|答案(1)|浏览(163)

我从oracle max函数中得到了错误的结果。它似乎选择了min日期而不是max日期。我简化了表。
Oracle版本:“Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.17.0.0.0”表:

ID_PLCMT_EVENT    NUMBER(16,0)
  DT_PLCMT_END      DATE
  ID_CASE           NUMBER(16,0)

质询:

select id_plcmt_event, dt_plcmt_end,id_case from placement where id_case=47626279;

结果:

350048317   09-MAR-21   47626279
350876791   20-MAY-21   47626279
355789596   21-NOV-22   47626279
393605551   17-FEB-23   47626279
389981360   31-JAN-23   47626279
394670566   31-DEC-12   47626279

质询:

select max(dt_plcmt_end) from placement where id_case=47626279;

结果:

31-DEC-12
dluptydi

dluptydi1#

你有两位数的年份,所以一个日期可能是1921年,另一个是2013年,如果你的日期格式是RR-MON-DD,这是匈牙利的默认日期格式,或者DD-MON-RR,这是美国,中国,英国和其他几个国家的默认日期格式(请参阅Oracle's Default Date format),这并不明显。
要查看整个日期,您可以用途:

select id_plcmt_event,
       TO_CHAR(dt_plcmt_end, 'YYYY-MM-DD HH24:MI:SS') AS dt_plcmt_end,
       id_case
from   placement
where  id_case=47626279;

以及:

select TO_CHAR(max(dt_plcmt_end), 'YYYY-MM-DD HH24:MI:SS') AS max_dt_plcmt_end
from   placement
where  id_case=47626279;

如果您使用的是SQL*Plus或SQL Developer,则可以使用以下命令更改默认日期格式:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

对于其他客户端应用程序,通常会有一个首选项,您可以在日期格式的设置中进行更改。

相关问题