> For the complete documentation index, see [llms.txt](https://docs.decube.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decube.io/data-quality-v2/monitor-types/field-health/temporal-checks.md).

# Temporal Checks

Is Before and Is After test types.

Two variants: check that the values in a date, datetime, or timestamp column fall before or after a specific point in time. These only apply to temporal column types.

* **Is Before** — a row fails if its value is not before (that is, at or after) the configured point in time.
* **Is After** — a row fails if its value is not after (that is, at or before) the configured point in time.

### When to use it <a href="#when-to-use-it" id="when-to-use-it"></a>

* A business expects `order_date` in an `orders` table to never be in the future, which would point to a clock or timezone bug. A daily Is Before check against "now" flags any future-dated row.
* A business requires users to be at least 18 years old. A daily Is Before check on `date_of_birth`, checked against a point in time of "18 years before now," flags any row more recent than that point — that is, someone younger than 18.

### What's configurable <a href="#whats-configurable" id="whats-configurable"></a>

* **Schedule** — fixed recurring, or Manual (requires Full Table Scan if Manual).
* **Scan Method** — Full Table Scan or Incremental Scan.
* **Point in Time** — the threshold to compare column values against. You can set this as:
  * **Now** — the moment the monitor runs.
  * **A fixed date or date/time** — a specific calendar date, or an exact date and time with timezone, if the column stores time as well as date.
  * **An offset from now** — a fixed amount of time before or after "now," in days, hours, or minutes (for example, "7 days from now" or "24 hours ago"). There's no "years" option — express a multi-year offset in days, or as a fixed date.
  * If the column is a plain date type with no time component, you can only use "Now," a fixed date, or a day-based offset — you can't compare a date-only column against a specific time of day or an hour/minute offset.
* **Tolerance** (optional) — how many, or what percentage of, failing rows are allowed.

<figure><img src="https://1779874722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTw0qpCVzfrIXqS4FEg4T%2Fuploads%2FyXoOQBjY6RANdoXFsg9L%2Fimage-20260812-023312.png?alt=media&amp;token=16d35ea1-7727-4196-bb5d-ad9cc8c087c7" alt=""><figcaption></figcaption></figure>

### Worked example — Is Before, using "Now" <a href="#worked-example-is-before-using-now" id="worked-example-is-before-using-now"></a>

* Asset: `orders` table, column `order_date` (timestamp)
* Check: Is Before
* Point in Time: Now
* Tolerance: not set

**Resulting rule:** "An incident will be created when any row fails." (A row fails here when order\_date is not before now — that is, it's dated in the future.)

### Worked example — Is Before, using an offset <a href="#worked-example-is-before-using-an-offset" id="worked-example-is-before-using-an-offset"></a>

* Asset: `users` table, column `date_of_birth` (date)
* Check: Is Before
* Point in Time: Offset from now — approximately 18 years ago, expressed in days, since only day, hour, or minute offsets are available for a date column
* Tolerance: not set

**Resulting rule:** "An incident will be created when any row fails." (A row fails here when date\_of\_birth is not before that point — that is, the person is younger than 18.)

### Notes <a href="#notes" id="notes"></a>

* Changing the schedule or scan method later is a destructive change (it creates a new monitor version). Adjusting only the tolerance value is not.
