Sql 如何在Oracle中从日期中提取毫秒?

Sql 如何在Oracle中从日期中提取毫秒?,sql,oracle11g,timestamp,Sql,Oracle11g,Timestamp,我有完整的日期(时间)。 但我只需要从日期算起的毫秒 请告诉我一行解决方案 例如:date=2016/03/16 10:45:04.252 我想要这个答案=252 我尝试使用这个查询 SELECT ADD_MONTHS(millisecond, -datepart('2016/03/16 10:45:04.252', millisecond), '2016/03/16 10:45:04.252') FROM DUAL; 但我没有成功 我有完整的日期(有时间) 这只能使用时间戳来完成。

我有完整的日期(时间)。 但我只需要从日期算起的毫秒

请告诉我一行解决方案

例如:
date=2016/03/16 10:45:04.252
我想要这个答案=
252

我尝试使用这个查询

SELECT ADD_MONTHS(millisecond, -datepart('2016/03/16 10:45:04.252', millisecond),
     '2016/03/16 10:45:04.252') FROM DUAL;
但我没有成功

我有完整的日期(有时间)

这只能使用
时间戳来完成。尽管Oracle的
date
确实包含时间,但它只存储秒,而不是毫秒


要从时间戳中获取小数秒数,请使用
To_char()
并将其转换为数字:

select to_number(to_char(timestamp '2016-03-16 10:45:04.252', 'FF3'))
from dual;

纯代码答案虽然正确,但对于理解解决方案并没有真正的帮助。请考虑添加一些文本来解释你所做的和代码意味着什么。谢谢你的努力。我得到了我的答案。这是最干净的答案。关于<代码>摘录(时间戳值,毫秒)< /代码>?(编辑:啊,这只是在“Oracle大数据”中,而不是Oracle数据库,即使是在21c版中,这太疯狂了…)我注意到这在Oracle 11g中起作用:
SELECT(timestamp_value-CAST(ValidFrom AS timestamp(0))AS ms FROM tableName
但是
ms
的类型仍然是
timestamp(n)
SELECT 
TRUNC((L.OUT_TIME-L.IN_TIME)*24)           ||':'||
TRUNC((L.OUT_TIME-L.IN_TIME)*24*60)        ||':'||
ROUND(CASE WHEN ((L.OUT_TIME-L.IN_TIME)*24*60*60)>60 THEN ((L.OUT_TIME-L.IN_TIME)*24*60*60)-60 ELSE ((L.OUT_TIME-L.IN_TIME)*24*60*60) END ,5) Elapsed
FROM XYZ_TABLE