我在完成 SQL 查询时遇到问题,我认为这与某些时间戳单元格为空/NULL 相关
SELECT
interaction_id,
resolved_by_new2,
(TO_TIMESTAMP(SPLIT_PART(group_assigned_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS') - TO_TIMESTAMP(SPLIT_PART(created_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS')) AS time_using_the_bot,
(TO_TIMESTAMP(SPLIT_PART(agent_assigned_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS') - TO_TIMESTAMP(SPLIT_PART(group_assigned_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS')) AS q_waiting_time,
(TO_TIMESTAMP(SPLIT_PART(first_response_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS') - TO_TIMESTAMP(SPLIT_PART(agent_assigned_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS')) AS agent_first_response,
(TO_TIMESTAMP(SPLIT_PART(resolution_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS') - TO_TIMESTAMP(SPLIT_PART(agent_assigned_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS')) AS handling_time,
(TO_TIMESTAMP(SPLIT_PART(resolution_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS') - TO_TIMESTAMP(SPLIT_PART(created_timestamp3, ',', 1), 'YYYY-MM-DD HH24:MI:SS')) AS resolution_from_creation
FROM
(
SELECT
interaction_id,
LISTAGG(resolved_by_new) AS resolved_by_new2,
COALESCE(NULLIF(LISTAGG(created_timestamp2), 0), '0') AS created_timestamp3,
COALESCE(NULLIF(LISTAGG(group_assigned_timestamp2), 0), '0') AS group_assigned_timestamp3,
COALESCE(NULLIF(LISTAGG(agent_assigned_timestamp2), 0), '0') AS agent_assigned_timestamp3,
COALESCE(NULLIF(LISTAGG(first_response_timestamp2), 0), '0') AS first_response_timestamp3,
LISTAGG(avg_response_time_secs) AS avg_response_time_secs2,
COALESCE(NULLIF(LISTAGG(resolution_timestamp2), 0), '0') AS resolution_timestamp3
FROM ...
红移误差:
“无效的日期时间日期字符串:上下文:输入长度 57 超出日期时间范围”
这是数据中的 SS
我尝试使用 NULLIF 将空值替换为 0,但没有成功
这里发生了很多事情。首先,LISTAGG() 连接组内列的所有字符串。我怀疑这没有达到您的预期,但会假设最好的。要了解其作用,您需要共享查询中的分组内容,但您将该信息排除在查询之外。
我认为错误消息中可以提供有关问题所在的线索。 “输入长度 57 超出日期时间范围”。我怀疑您传递给 TO_TIMESTAMP() 的字符串格式不正确。如果 LISTAGG() 将多个时间戳字符串粉碎在一起,则很容易发生这种情况。
我会查看您内部 SELECT 的结果,并查看您放入 TO_TIMESTAMP() 中的字符串的长度。我希望您会看到您的内部查询没有生成您期望的字符串。