我有一个要创建的报告,但是有一个我无法解决的小问题,因为我生成的column(date)具有不同的值。我在子查询中使用它。我的问题是我可以使用一种格式来管理列的值吗?请参阅下表以供参考,
我的列(日期)包含
date_columns
2019-06-20T11:09:15.674+00:00
2019-06-20T11:09:15.674+00:00
2019-06-20T11:09:15.674+00:00
2019-06-20T11:09:15.673+00:00
现在,我的问题是它返回了我ORA-01427:单行子查询由于该2019-06-20T11:09:15.673+00:00
返回了多行。我可以做一种使其看起来像2019-06-20T11:09:15
的格式吗?
我尝试了以下查询,但没有任何变化。它返回了我同样的错误。
select distinct to_date(substr(dar.last_update_date,1,15),'YYYY-MM-DD HH:MI:SS')
select distinct to_date(dar.last_update_date,1,15,'YYYY-MM-DD HH:MI:SS')
谢谢!
答案 0 :(得分:2)
2019-06-20T11:09:15.673+00:00
在the official XML representation中似乎是日期时间的字符串。我们可以使用to_timestamp_tz()
将其转换为实际时间戳,然后将时间戳转换为日期:
select cast(
to_timestamp_tz('2019-06-20T11:09:15.673+00:00','YYYY-MM-DD"T"HH24:MI:SS:FFTZH:TZM')
as date)
from dual;
但是,我不确定这将如何解决ORA-01427: single-row subquery returns more than one row
错误。当我们使用像这样的子查询时会发生此异常……
where empno = ( select empno
from emp
where deptno = 30
and sal > 2300 )
…,并且子查询返回多个行,因为WHERE子句太松懈。解决方案是修复子查询的WHERE子句,使其仅返回一行(或在不可能的情况下,在子查询的投影中使用distinct)。