将字符串转换为 SQL 中的日期
Converting a string to date in SQL
我正在开发一个 table,其中我有两个名为 birth 和 death 的列,日期为字符串(到具体字符不同)。
我想用这两列来计算年龄。如果缺少任何一个值,即如果缺少出生或死亡,那么它应该 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)
我正在开发一个 table,其中我有两个名为 birth 和 death 的列,日期为字符串(到具体字符不同)。
我想用这两列来计算年龄。如果缺少任何一个值,即如果缺少出生或死亡,那么它应该 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)