如何将 NULL 视为 MAX 日期而不是在 PostgreSQL 中忽略它?

How consider NULL as the MAX date instead of ignoring it in PostgreSQL?

我有一个 table 来控制用户对特定系统的访问。 “end_date”列定义了这些访问的限制日期。例如:

如果“end_date”为 NULL,则表示用户可以终身访问。考虑到这一点,当我进行查询以获取最大值(end_date)时,如何将 NULL 视为最大值 end_date?

SELECT MAX(end_date) FROM user_access WHERE user_id='80076'

我试过了,但没用...

根据 Datetimes 8.5.1.4 使用 'infinity'。特殊值 'infinity date, timestamp later than all other time stamps'.

如果出于某种原因您想保留数据,那么:

SELECT MAX(coalesce(end_date, 'infinity')) FROM user_access WHERE user_id='80076';

这会将 'infinity' 替换为 NULL 值。

如果您不想乱用替换魔法值,I have implemented“严格”最小和最大函数,return NULL 用于任何 NULL 输入。

它们是多态的,因此(我认为)它们支持定义排序操作​​的每种类型。