我想将 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')
我认为你可以将
FROM_TZ(CREATEDDATE, 'Canada/Mountain')
更改为 SYSTIMESTAMP
。
请参阅相关的 docs 了解如何使用它。您可能需要根据您的时区“加拿大/山区”纳入您的查询中。