Извлечь часть времени из столбца TimeStamp в ORACLE - PullRequest
11 голосов
/ 01 июня 2010

В настоящее время я использую MyTimeStampField-TRUNC(MyTimeStampField) для извлечения части времени из столбца метки времени в Oracle.

SELECT CURRENT_TIMESTAMP-TRUNC(CURRENT_TIMESTAMP) FROM DUAL

Это возвращает

+ 00 13: 12: 07.100729

Для меня это нормально, извлекать часть времени из поля метки времени, но мне интересно, есть ли лучший способ (возможно, использование встроенной функции ORACLE) сделать это?

Ответы [ 7 ]

6 голосов
/ 01 июня 2010

Вы всегда можете сделать что-то вроде:

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

Я считаю, что это будет работать и с временными метками.

6 голосов
/ 01 июня 2010

А как насчет функции EXTRACT () ?

2 голосов
/ 28 января 2015

Вы хотите просто дату, затем используйте

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

и если вы хотите просто время, используйте

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

параметры вносят все изменения

'DD-MM-YYYY'

и

'hh24:mi:ss'
2 голосов
/ 16 октября 2012
select TO_DATE(TO_CHAR(SYSDATE,'hh24:mi:ss'),'hh24:mi:ss') from dual

Это дает метку времени на 1 час меньше, чем фактическая.

1 голос
/ 10 декабря 2012

Это может помочь:

Select EXTRACT(HOUR FROM (SYSDATE - trunc(sysdate)) DAY TO SECOND ) From dual;
0 голосов
/ 11 июля 2014
select hour(CURRENT_TIMESTAMP)
0 голосов
/ 21 декабря 2011

Я думаю, что рассматриваемый метод короче и быстрее, чем в обоих ответах. Потому что он включает в себя только две математические операции и не требует сложного анализа, форматирования и преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...