将 Postgres 文本列值读取为转换为纪元整数的时间戳

Read Postgres Text column values as timestamp converted to epoch integers

我有一个 postgres 数据库,其中包含 date/time 文本格式的信息。没有办法改变它,但我必须将这些值作为纪元以来的毫秒来检索。 我设法进行了查询,将这些日期时间记录转换为时间戳,以便获得正确的“最大”函数行为,如下所示:

SELECT max(TO_TIMESTAMP(column_name, 'YYYY/MM/DD HH24:MI:SS')) 
FROM table_name;

但是把其他结果转换成毫秒好像不行。文档和论坛中的所有示例仅展示了某些文字值的用法,而不是从数据库中选择的值。所以像这样的行不起作用:

SELECT EXTRACT(EPOCH FROM TIMESTAMP 
                  (select max(TO_TIMESTAMP(column_name, 'YYYY/MM/DD HH24:MI:SS'))
FROM table_name));
SELECT EXTRACT(EPOCH FROM TIMESTAMP 
           (select TO_TIMESTAMP(column_name,'YYYY/MM/DD HH24:MI:SS') 
FROM table_name));
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE(
                  SELECT TO_TIMESTAMP(column_name, 'YYYY/MM/DD HH24:MI:SS') 
FROM table_name));
SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE TO_TIMESTAMP
                  (column_name, 'YYYY/MM/DD HH24:MI:SS')) 
FROM table_name;

有没有实际的方法可以通过查询来完成我想要的,或者我必须做一些更复杂的事情?

P.S。 当然,我可以将所有信息作为文本检索并使用 Qt (QDateTime) 将其转换为毫秒,但这会更昂贵,我想知道是否有办法让数据库为我做这件事。

只有文字(常量)才需要 timestamp 关键字,如果您有合适的时间戳值可用则不需要:

SELECT extract(epoch from max(TO_TIMESTAMP(column_name, 'YYYY/MM/DD HH24:MI:SS')))
FROM table_name;

注意epoch表示,而不是毫秒。