/ecto_unix_timestamp

Ecto type for datetimes stored and cast as Unix timestamps. 🕰️

Primary LanguageElixirMIT LicenseMIT

EctoUnixTimestamp

hex.pm badge Documentation badge CI Coverage Status

A nimble Elixir library that provides a Ecto.Type for fields that come in as Unix timestamps.

Installation

defp deps do
  [
    # ...,
    {:ecto_unix_timestamp, "~> 0.1.0"}
  ]
end

Usage

Use this Ecto type in your schemas. You'll have to choose the precision of the Unix timestamp, and the underlying database data type you want to store the data as.

schema "users" do
  field :created_at, EctoUnixTimestamp, unit: :second, underlying_type: :utc_datetime_usec
end

Once you have this, you can cast Unix timestamps:

import Ecto.Changeset

changeset = cast(%User{}, %{created_at: System.system_time(:second)}, [:created_at])

fetch_field!(changeset, :created_at)
#=> ~U[...] # a DateTime

License

Released under the MIT license. See the license file.