Skip to content
Open beta — everything’s free right now, and your rate is locked when it ends.

The date field, with or without time

Date versus date-and-time is decided when the field is created and can't be flipped later — here's why, plus the display formats, how “today” is decided, and the API shapes.

Updated August 2026

A date field holds either a calendar date — 2026-08-13, the same day everywhere on earth — or an exact moment, 2026-07-28T10:24:00.000Z. The demo plant shop's Orders table has one of each: Placed records the moment an order came in; Deliver by is a promise about a day.

Which of the two a field is gets decided once, at creation.

Editing the Placed date field: the Include time switch shown locked, with the Format and Time format selects below.

Include time is permanent

The Include time switch is set when you create the field and is locked afterward — the field editor greys it out, and the API refuses the flip with the same reason. This isn't caution for its own sake: the two kinds are stored as genuinely different things. A date-only value is a plain calendar date with no timezone and no clock; a with-time value is an instant, stored in universal time. Converting between them would mean inventing a time of day for every existing record, or destroying one — both are silent damage, so neither happens.

If a field turns out to be the wrong kind, add a new field of the right kind, move what moves, and delete the old one. Honest work beats invented data.

The display options

  • Format — five ways to draw the day: 2026-07-20 · 07/20/2026 · 20/07/2026 · Jul 20, 2026 · July 20, 2026. New fields made in the editor start on Jul 20, 2026; fields created over the API with no format read as 2026-07-20.
  • Time format (with time on) — 18:30 or 6:30 pm.

Both are display only, changeable any time, and fixed rather than per-viewer: everyone reads the same column the same way.

Editing

The cell opens a calendar — pick a day, or hit Today or Clear. With time on there's a time box beside it that accepts nearly anything a person types: 13:47, 1:47 pm, 9. Pasted values work too; a pasted time with no timezone on it is read in the database's timezone.

"Today" is the database's today

A with-time value is one instant, but which day that instant belongs to depends on a timezone — and Tabla resolves it with the database timezone, a per-database setting. The grid displays with-time values in it, and a filter on "today" flips at its midnight, the same moment for every member wherever they sit. One shared clock, no per-viewer surprises. Set it once for where the work happens — details at Database timezone.

Date-only values ignore all of this: a promise about 2026-08-13 needs no clock.

Filter operators: is, before, after, on or before, on or after, the empty pair — with relative values like today available where you'd type a date. Date fields also power the calendar view.

Over the API

The two kinds read differently:

{ "fields": { "Placed": "2026-07-28T10:24:00.000Z", "Deliver by": "2026-07-31" } }

With-time values are ISO timestamps in universal time — convert for display yourself. Date-only values are bare YYYY-MM-DD strings.

Writes take "2026-07-31" for date-only, and a timestamp with at least hours and minutes for with-time — include an offset (Z, +02:00) to be unambiguous. Free-text dates ("July 2", "07/02/2026") are refused rather than guessed at: a silently misread date is worse than a rejected one.

When it's the wrong field

A length of time (1:30) is a duration, not a date. A "done" flag with no meaningful day is a checkbox. And if the date should follow from other fields, a formula can compute one.

Tabla is the database we build these on.

A no-code database with real Postgres underneath: every feature on every plan, a million records per database, and your whole database back out in one file, any day.

More guides