как получить VARCHAR2 (26 символов) для отображения в качестве даты и времени в результате запроса - PullRequest
0 голосов
/ 15 июня 2019

enter image description here

Мои данные содержали как строковую, так и числовую переменную.и тип данных "VARCHAR2" в подмножестве результата, который я ищу, все они отметки времени в числах.Как я могу получить запрос (на SQL разработчик / оракул) для отображения в удобочитаемой дате / времени

очень плохо знаком с SQL, поэтому, пожалуйста, помогите!

select CONVERT(VARCHAR2(26 Char),GETDATE(med.poetimestamp),108)

ORA-00936:отсутствует выражение 00936. 00000 - «отсутствует выражение»

Ответы [ 2 ]

2 голосов
/ 15 июня 2019

Кажется, что столбец poetimestamp имеет тип Unix Timestamp из рисунка, поэтому можно использовать следующий оператор выбора:

select date'1970-01-01' + m.poetimestamp / 86400
  from med m;

convert() и getdate() функции специально для SQL Server.

0 голосов
/ 15 июня 2019

Вы сказали, что «данные содержат и дату, и время в 2000-03-20: 23: 12: 29.176262 и 991010049».Вы должны явно кодировать для обоих случаев.Если есть другие случаи, вы должны написать для каждого из них.

Мне кажется странным, что между частью даты и частью времени есть двоеточие.Это по-настоящему или это тип?Я предполагаю, что это на самом деле, но вы можете изменить формат самостоятельно, я надеюсь.

with data(x) as (
  select '2000-03-20:23:12:29.176262' from dual
  union all
  select '991010049' from dual
)
select case 
  when substr(x,5,1) = '-' then to_timestamp(x, 'yyyy-mm-dd:hh24:mi:ss.ff')
  else cast(date '1970-01-01' + numtodsinterval(x, 'second') as timestamp)
end ts
from data;

TS                           
-----------------------------
2000-03-20 23:12:29,176262000
2001-05-28 00:34:09,000000000

С уважением, Stew Ashton

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