【问题标题】:Oracle query to get min or max value of a datatypeOracle查询以获取数据类型的最小值或最大值
【发布时间】:2019-06-10 22:36:45
【问题描述】:

Oracle 是否有一个函数或查询可以返回数据类型的最小值或最大值?从文档中我知道日期字段的最小值是公元前 4712 年 1 月 1 日。无论如何从选择语句中获取该日期值?

Select ?something? from dual;

【问题讨论】:

  • 据我所知没有,您必须诉诸文档
  • OldProgrammer - 文档链接,仅此而已,希望我能否决评论:(
  • Jaime,谢谢你的回答,我就是这么想的;我希望有人知道我使用 Google 或 Stack Overflow 找不到的功能。

标签: sql oracle


【解决方案1】:

如果你写了一小段代码,那么答案是是的。不过,不完全是一个 SELECT(除非您将所有这些都放入一个函数中)。

SQL> set serveroutput on;
SQL> declare
  2    datum date := trunc(sysdate);
  3  begin
  4    while 1 <> 2 loop
  5      datum := datum - 1;
  6    end loop;
  7  exception
  8    when others then
  9      dbms_output.put_line('Last valid date = ' ||
 10        to_char(datum, 'dd.mm.yyyy bc'));
 11  end;
 12  /
Last valid date = 01.01.4712 BC

PL/SQL procedure successfully completed.

SQL>

这很快(我的意思是,代码不需要时间来执行)。对于其他数据类型,它并没有那么快(例如哪个是最小的有效整数?),至少不是使用相同的原理。

【讨论】:

  • 我认为这是唯一的选择,感谢您的回复。
【解决方案2】:

julian日历中使用第一个值

select to_date(1, 'j') from dual

显示的结果取决于服务器和客户端设置,但它是日期4712-01-01 BC

dbfiddle demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2017-01-20
    • 2019-03-13
    • 2022-11-25
    • 2019-01-02
    • 2014-05-10
    • 1970-01-01
    相关资源
    最近更新 更多