在oracle sql中将时间戳列转换为毫秒

问题描述 投票:0回答:1

我想将 Oracle DB 中的时间戳列转换为毫秒。

时间戳列值转换为加拿大/山区时区并添加为时间戳值,因为它已经在加拿大/山区时区,我只想通过sql将其转换为毫秒。

问题是,当我在本地运行查询时,它运行良好并正确给出输出。但是当相同的部署在服务器上时,值会有所不同

例如:

数据库中的时间戳值:2020-10-22 09:46:27.000000000 AM

转换后的本地毫秒数:1666239387000,转换回来后为 Thursday, October 20, 2022 9:46:27 AM 这是正确的

服务器上转换后的毫秒数:1666280787000,转换回来后是 Thursday, October 20, 2022 9:16:27 PM 这是错误的

我希望毫秒与本地毫秒值相同。

任何指导都会有帮助

我正在使用以下查询

SELECT 
(EXTRACT(DAY FROM create_interval) * 24 * 60 * 60 + EXTRACT(HOUR FROM create_interval) * 60 * 60 + EXTRACT(MINUTE FROM create_interval) * 60 + EXTRACT(SECOND FROM create_interval)) * 1000 AS createdDate
 FROM 
( SELECT (FROM_TZ(CREATEDDATE, 'Canada/Mountain') - TIMESTAMP '1970-01-01 00:00:00 UTC') AS create_interval 
FROM table_name WHERE IDENTIFICATIONKEY = 'id')
sql oracle oracle12c
1个回答
-1
投票

我认为你可以将

FROM_TZ(CREATEDDATE, 'Canada/Mountain')
更改为
SYSTIMESTAMP

请参阅相关的 docs 了解如何使用它。您可能需要根据您的时区“加拿大/山区”纳入您的查询中。

© www.soinside.com 2019 - 2024. All rights reserved.