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


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

SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL

这回来了

+00 13:12:07.100729

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


6114
2018-06-01 17:20


起源



答案:


关于什么 提取() 功能?


7
2018-06-01 17:24



如果使用提取函数,应该写类似的东西 SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP) || ':' ||EXTRACT(MINUTE FROM CURRENT_TIMESTAMP)|| ':' ||EXTRACT(SECOND FROM CURRENT_TIMESTAMP) FROM DUAL; 我实际使用的方法更有效吗? - RRUZ
如果timepart只有1位数,@ RRUZ也可能会添加前导零:SELECT LPAD(EXTRACT(HOUR FROM CURRENT_TIMESTAMP),2,'0')|| ':'|| LPAD(EXTRACT(MINUTE FROM CURRENT_TIMESTAMP),2,'0')|| ':'|| LPAD(EXTRACT(SECOND FROM CURRENT_TIMESTAMP),2,'0')来自DUAL; - nico.ruti


答案:


关于什么 提取() 功能?


7
2018-06-01 17:24



如果使用提取函数,应该写类似的东西 SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP) || ':' ||EXTRACT(MINUTE FROM CURRENT_TIMESTAMP)|| ':' ||EXTRACT(SECOND FROM CURRENT_TIMESTAMP) FROM DUAL; 我实际使用的方法更有效吗? - RRUZ
如果timepart只有1位数,@ RRUZ也可能会添加前导零:SELECT LPAD(EXTRACT(HOUR FROM CURRENT_TIMESTAMP),2,'0')|| ':'|| LPAD(EXTRACT(MINUTE FROM CURRENT_TIMESTAMP),2,'0')|| ':'|| LPAD(EXTRACT(SECOND FROM CURRENT_TIMESTAMP),2,'0')来自DUAL; - nico.ruti


你总是可以这样做:

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

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


6
2018-06-01 17:25





从双重选择TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss')。这使得时间戳比实际时间少1小时。


2
2017-10-16 05:55





这可能有所帮助:

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

1
2017-12-10 15:07





你想要日期然后使用

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

如果你想要时间,那么使用

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

参数正在进行所有更改

'DD-MM-YYYY'

'hh24:mi:ss'

1
2018-01-27 21:08



所以最后的陈述将是上述语句SELECT to_char(cast(SYSDATE as date),'DD-MM-YYYY'),to_char(cast(SYSDATE as date),'hh24:mi:ss')FROM DUAL - Amir Md Amiruzzaman


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


0
2017-12-21 08:44





select hour(CURRENT_TIMESTAMP)

-2
2017-07-11 18:37



欢迎来到SO。也许你可以通过指定它比问题的解决方案更好的方式,以及按照帮助部分正确格式化代码来更好地回答你的问题。 - Félix Gagnon-Grenier