将字符串转换为 SQL 中的日期

Converting a string to date in SQL

我正在开发一个 table,其中我有两个名为 birthdeath 的列,日期为字符串(到具体字符不同)。

我想用这两列来计算年龄。如果缺少任何一个值,即如果缺少出生或死亡,那么它应该 return 'unknown' (顺便说一句,在 table 我正在处理丢失的值给出为 None)

当我尝试将它们转换为日期时,要么他们给我一个错误,要么他们给出了错误的年龄。

例如,假设这些分别是出生日期和死亡日期:
出生:0133-01-30T00:53:28+00:53
死亡:0193-07-01T00:53:28+00:53

我使用了以下命令:
CAST(death as date) - CAST(birth as date)
但这是 returning 年龄,例如 2210 或者只是一些荒谬的年龄
顺便说一句,我正在使用 POSTGRESQL 在 JUPYTER Notebook 中执行此操作

可以使用postgresql的age函数来计算年龄。

示例:

SELECT coalesce(age('0193-07-01T00:53:28+00:53'::timestamp, '0133-01-30T00:53:28+00:53'::timestamp)::text, 'Unknown');
          age
------------------------
 60 years 5 mons 2 days
(1 row)

获取年份:

SELECT coalesce(EXTRACT(years FROM age('0193-07-01T00:53:28+00:53'::timestamp, '0133-01-30T00:53:28+00:53'::timestamp))::text, 'Unknown');

 extract
---------
      60
(1 row)

SELECT coalesce(EXTRACT(years FROM age('0193-07-01T00:53:28+00:53'::timestamp, null))::text, 'Unknown');
 coalesce
----------
 Unknown
(1 row)