我有一个获取派生值的查询
select datediff(minute, date_field_1, date_field_2) as date_diff from table_name;
问题是结果中的某些值可能是负数,因为在某些情况下date_field_1
可能会大于date_field_2
。
因此,这会导致结果为负值,以及结果表中的正值。
是否存在一些默认值或省略并在这些负计算值中给出null或0?
使用redshift。
答案 0 :(得分:2)
捕获负值的一种方法是使用CASE WHEN
。它会检查您的约会是否小于0。
我建议将0
作为默认值:
SELECT
CASE WHEN datediff(minute, date_field_1, date_field_2) < 0
THEN 0
ELSE datediff(minute, date_field_1, date_field_2) END as date_diff
FROM table_name;
答案 1 :(得分:1)
这是你想要的吗?
select (case when date_field_1 >= date_field_2
then datediff(minute, date_field_1, date_field_2)
else 0
end) as date_diff
from table_name;