从ORACLE中的TimeStamp列中提取时间部分

时间:2010-06-01 17:20:16

标签: sql oracle

目前,我正在使用MyTimeStampField-TRUNC(MyTimeStampField)从Oracle中的时间戳列中提取时间部分。

SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL

返回

  

+00 13:12:07.100729

这对我来说很合适,从时间戳字段中提取时间部分,但我想知道是否有更好的方法(可能使用ORACLE的内置函数)来执行此操作?

7 个答案:

答案 0 :(得分:6)

EXTRACT()功能呢?

答案 1 :(得分:6)

您可以随时执行以下操作:

select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual

我相信这也适用于时间戳。

答案 2 :(得分:2)

select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual

这使得时间戳比实际时间少1小时。

答案 3 :(得分:2)

你想要日期,然后使用

to_char(cast(SYSDATE as date),'DD-MM-YYYY')

如果您只想要时间,请使用

to_char(cast(SYSDATE as date),'hh24:mi:ss')

参数正在进行所有更改

'DD-MM-YYYY'

'hh24:mi:ss'

答案 4 :(得分:1)

这可能有所帮助:

Select EXTRACT(HOUR FROM (SYSDATE - trunc(sysdate)) DAY TO SECOND ) From dual;

答案 5 :(得分:0)

我认为所讨论的方法比两个答案都更短,更快。因为它只涉及两个数学运算,没有复杂的解析,格式化和转换。

答案 6 :(得分:-2)

select hour(CURRENT_TIMESTAMP)