如何获取VARCHAR2(26 CHAR)以在查询结果中显示为日期时间

时间:2019-06-15 15:49:21

标签: sql oracle datetime

enter image description here

我的数据包括字符串和数字变量。我正在寻找的结果子集中数据类型为“ VARCHAR2”,所有时间戳均为数字。我如何获取查询(在SQL Developer / Oracle上)以可读的日期/时间显示

sql的新手,所以请帮忙!

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

ORA-00936:缺少表达   00936. 00000-“缺少表达式”

2 个答案:

答案 0 :(得分:2)

您的poetimestamp列在图片中似乎是Unix Timestamp类型,因此可以使用以下select语句:

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

convert()getdate()函数是SQL Server的特殊功能。

答案 1 :(得分:0)

您说“数据同时包含: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

最好的问候, 炖阿什顿