Athena日期差异

16

我尝试编写一个简单的日期差函数,但是我的单位值被读取为列(“dd”),因此我一直收到“无法解析列”的错误。

我正在使用AWS Athena。

我的代码如下:

SELECT "reservations"."id" "Booking_ID"
    , "reservations"."bookingid" "Booking_Code"
    , "reservations"."property"."id" "Property_id"
    , CAST("from_iso8601_timestamp"("reservations"."created") AS date) "Created"
    , CAST("from_iso8601_timestamp"("reservations"."arrival") AS date) "Arrival"
    , CAST("from_iso8601_timestamp"("reservations"."departure") AS date) "Departure"
    , CAST("from_iso8601_timestamp"("reservations"."modified") AS date) "Modified"
    , date_diff("dd", CAST("from_iso8601_timestamp"("reservations"."created") AS date), CAST("from_iso8601_timestamp"("reservations"."arrival") AS date)) "LoS"
FROM
    "database".reservations
LIMIT 5;

我正在尝试获取“创建日期”和“到达日期”之间的天数差异。

我已经尝试使用date_diff函数,其中参数为DD,“DD”,“dd”,dd,Day,day,“day”,但我得到了相同的错误。

1个回答

34

Athena基于Presto。有关date_diff()的信息,请参阅Presto文档--单位是常规的varchar,因此需要用单引号:

date_diff('day', ts_from, ts_to)

2
谢谢,非常感谢! - JoeD
1
还有一点需要注意的是,你不能用像's'代替'second'或者'd'代替'day'这样的缩写——我之前也犯过类似的错误,因为我太习惯在其他语言中可以用单个字符来代替。 - thleo
谢谢,@thleo。我不得不使用“'millisecond'”而不是“'ms'”。 - Andriy Makukha
谢谢,@thleo。我不得不使用“'millisecond'”而不是“'ms'”。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接