【发布时间】:2023-03-16 10:51:01
【问题描述】:
我有一张每人驾驶执照的表格,并且知道某人何时获得驾驶执照。驾照的有效期可以是您获得驾照之日起 X 天,也可以是特定日期。
acquired relative specific_date valid_type expiration_date
----------------------------------------------------------------------------------
2015-02-05 500 null days
2015-02-05 null 2016-03-05 date
2015-02-05 200 null days
2015-02-05 null 2016-02-22 date
我现在的查询是:
SELECT acquired,
relative_date,
specific_date,
valid_type
FROM person_drivers_license
WHERE (valid_type = 'days'
AND (EXTRACT(epoch
FROM acquired) - EXTRACT(epoch
FROM now()))/86400 + relative_date > 0)
OR (valid_type = 'DATE'
AND specific_date >= now()));
我正在尝试使用上面的 select 语句添加 expire_date 列。如果是特定日期,只需将日期放入 expire_date 中,如果是相对日期,则在获取日期的帮助下计算到期日期。这在 PSQL 中可行吗?
【问题讨论】:
-
检查
COALESCE()函数。或者更复杂的CASE WHEN ... THEN ... ELSE END -
输出应该是什么?
-
这应该是我写的那张表,其中的 expire_date 列填充了许可到期的日期。
标签: sql postgresql select aggregate-functions psql