繁体   English   中英

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

[英]Converting a string to date in SQL

我正在处理一个表,其中有两个名为“出生”和“死亡”的列,日期为字符串(特定字符会有所不同)。

我想通过使用这两列来计算年龄。 如果缺少任何一个值,即如果缺少出生或缺少死亡,则它应该返回“未知”(顺便说一下,我正在使用的表中的缺失值被指定为None

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

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

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

您可以使用 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM