读取Postgres Text列值作为转换为epoch整数的时间戳



我有一个postgres数据库,以文本格式携带日期/时间信息。没有办法改变它,但我必须从epoch开始以毫秒的形式检索这些值。我设法进行了一个查询,将这些日期时间记录转换为时间戳,这样我就得到了正确的";max";这样的功能行为:

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表示,而不是毫秒。

最新更新