【发布时间】:2019-05-20 06:11:59
【问题描述】:
我的代码中的日期函数卡住了:
try(date_parse(min(MilestoneDate), '%Y-%m-%d %H:%i:%s')) > CURRENT_DATE
消息错误是:一般内部错误。我不知道这意味着什么。 如果我注释掉 'try(date_parse(min(MilestoneDate), '%Y-%m-%d %H:%i:%s')) > CURRENT_DATE',则整个代码都有效。但我真的需要它基于要求。我也尝试:拥有 DATE(SUBSTR(min(finishdate), 1, 10)) > CURRENT_DATE。但错误消息是:无法投射到日期。请帮忙。谢谢。
With ManagementView1 as (
select * from Management_View a
left join
(select *
from
(select projectobjectid, id as activity_id,finishdate as MilestoneDate, name as Milestone
from activity
where date = (select max(date) from activity)
union ALL
select projectobjectid, id as activity_id, min(finishdate) as finishdate,
name
from activity
where id in ('FS1000', 'PR1000', 'PR1500')
group by projectobjectid, id, name)
) b
ON try_cast(a.objectid as double) = b.projectobjectid
AND a.id = b.activity_id
)
select * from
(
select site, building, id, milestonetype, MilestoneDate, Milestone
from ManagementView1
WHERE milestonetype in ('Breakground', 'Energization')
UNION ALL
select site, building, id, milestonetype, min(MilestoneDate) as
MilestoneDate, Milestone
from ManagementView1
where milestonetype = 'PR'
having try(date_parse(min(MilestoneDate), '%Y-%m-%d %H:%i:%s')) >
CURRENT_DATE
--having DATE(SUBSTR(min(finishdate), 1, 10)) > CURRENT_DATE
-- and milestonetype = 'PR'
group by site, building, id, milestonetype, Milestone
) c
【问题讨论】:
-
不起作用的值是什么样的?为什么要将日期/时间值存储为字符串?
-
我尝试了您的解决方案,并且我还稍微修改了 sql。现在可以了。但是还有另一个问题。我从查询中获得的数据只是“UNION ALL”上方第一部分的数据(那些属于“Breakground”和“Energization”的数据)。我无法从“UNION ALL”下方的第二部分获取数据。以下是修改后的查询:
-
“一般内部错误。” -- 实际的消息和/或堆栈跟踪是什么?