kalkatfyodor

kalkatfyodor

But instead using native_datetime and timestamp.

I have searched the Internet and the overwhelming majority is saying that timestamp should NOT be used and instead one should use timestamptz.

So why does Phoenix use native_datetime and timestamp?

Sources:

https://elixirguides.com/2019/06/what-is-the-difference-between-utc_datetime-and-naive_datetime-in-ecto/

Showing Posts 1 to 9

krstfk

krstfk

timestamps
Just in case you missed it, there’s a search box on the top left of all elixir documentation.

dodo

dodo

No idea, I always use timestamptz.

In migrations: timestamps(type: :timestamptz)

In schemas: timestamps(type: :utc_datetime_usec)

kalkatfyodor

kalkatfyodor OP

What are some downsides of using timestamptz or utc_datetime_usec?

kalkatfyodor

kalkatfyodor OP

Thanks. I haven’t noticed. It’s too dark. They should make the input box with white background.

Current state:

VS

My proposal:

cmo

cmo

Are you aware that there is a search box on this forum too, and one of the Google homepage?

You can change hexdocs to light theme at the bottom of the page.

kalkatfyodor

kalkatfyodor OP

I made the white background input box. It is not part of theToggle night mode. Toggle night mode is changing only the color of the main content, sidebar is unchanged. Try it for yourself, if you don’t believe me :wink:

al2o3cr

al2o3cr

One of the answers in that linked StackOverflow post points to an official Postgres FAQ that has a decent-sounding reason:

(in response to "Don’t use timestamp without TZ to store UTC"):

When should you?

If compatibility with non-timezone-supporting databases trumps all other considerations.

Ecto already converts values to UTC, and needs to support other databases that don’t have timestamp with time zone.

dodo

dodo

I don’t see any, which is why I always use it. timestamptz is the postgres type, utc_datetime_usec is the corresponding ecto type which maps to the DateTime elixir type.

Nicd

Nicd

Please use the search facilities of this forum, just a search for timestamptz returns several topics that have details about this.

The reason why Ecto’s timestamps() are naive by default is backwards compatibility. Back when Ecto was created, Elixir didn’t even have datetime types and Ecto didn’t have timezone support.

Also quoting my earlier answer in an earlier topic:

BTW, if you need to store the timezone too (in PostgreSQL), you have no option but to use a naive datetime field and store the offset or timezone information separately. This is because PostgreSQL does not have a data type for storing a timestamp with timezone.

There is the confusingly named timestamp with timezone but all it does is convert your input timestamp to UTC and convert it back to whatever your DB connection’s timezone is when reading. It does not even store the offset/timezone. So you need to do that yourself somehow.

Personally I don’t find much use in timestamptz, but that’s up to everyone to decide for themselves. It’s easy to override this in your migrations. In your schema you would use something like timestamps(type: :utc_datetime) and in migration timestamps(type: :timestamptz).

If you’re using just Elixir and your application is the only one connecting to the database, then it doesn’t make a difference if you use timestamp or timestamptz. If you use other applications to also connect to the same database, timestamptz will have different implications.

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews