guides/howtos/Duration Types with Postgrex.md
As of Ecto 3.12.0, Ecto supports a :duration type which maps to Elixir's Duration struct (available as of Elixir 1.17).
One natural use case for this is when using Postgres's interval type. Historically, Postgrex loads intervals from the database into a custom Postgrex.Interval struct. With the introduction of Duration, there is now the option to choose between the two. Please follow the steps below to enable mapping to Duration.
create table("movies") do
add :running_time, :interval
end
defmodule Movie do
use Ecto.Schema
schema "movies" do
field :running_time, :duration
end
end
Duration# Inside lib/my_app/postgrex_types.ex
Postgrex.Types.define(MyApp.PostgrexTypes, [], interval_decode_type: Duration)
config :my_app, MyApp.Repo, types: MyApp.PostgresTypes