如何将 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 输入。
它们是多态的,因此(我认为)它们支持定义排序操作的每种类型。
我有一个 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 输入。
它们是多态的,因此(我认为)它们支持定义排序操作的每种类型。