首页 > 解决方案 > 如何从postgresql中表的更改列的结果中查询

问题描述

所以我在表中有一个字符串时间列,现在我想将该时间更改为日期时间类型,然后查询选定日期的数据。

有直接的方法吗?我能想到的一种方法是 1)添加一个新列 2)使用转换后的日期将值插入其中 3)使用新列进行查询

在这里,我坚持使用 INSERT 的第二步,所以需要帮助

  ALTER TABLE "nds".”unacast_sample_august_2018" 
    ADD COLUMN new_date timestamp

-- Need correction in select statement that I don't understand
    INSERT INTO "nds".”unacast_sample_august_2018” (new_date)
    (SELECT new_date from_iso8601_date(substr(timestamp,1,10))

有人可以帮助我更正,如果可能的话,还有更好的方法吗?

尝试了其他方式一步完成,但给出了错误Column does not exist new_date

SELECT * 
FROM (SELECT from_iso8601_date(substr(timestamp,1,10)) FROM "db_name"."table_name") AS new_date
WHERE new_date > from_iso8601('2018-08-26') limit 10;

SELECT new_date = (SELECT from_iso8601_date(substr(timestamp,1,10)))
FROM "db_name"."table_name"
WHERE new_date > from_iso8601('2018-08-26') limit 10;

有人可以纠正这些查询吗?

标签: postgresqlselectsql-insert

解决方案


解决如下:

select *
from 
(
  SELECT from_iso8601_date(substr(timestamp,1,10)) as day,*
  FROM "db"."table"
 )
WHERE  day > date_parse('2018-08-26', '%Y-%m-%d')  
 limit 10

推荐阅读