Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

To model changing rates without losing history, keep a stable identity for each rate schedule and add a new dated version whenever the rate changes. Store when each version applies—the business-effective period—instead of overwriting the old value. If you also need to know what the database had recorded at an earlier moment, track system time separately. This is the core of effective-dated records, and when both timelines matter, bitemporal data.

What question should the data model answer?

“How do you model rates that change over time without rewriting history?” can mean two different things:

  • What rate applies on a business date? This requires business-effective time: when the rate is intended to apply.
  • What did the database contain at an earlier moment? This requires system time: when the database recorded a version.

These timelines are not interchangeable. A future-dated rate needs business-effective dates even if the database automatically keeps system history. A system-versioned table records database row-version timing; it does not, by itself, define when a rate applies in the modeled business.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

OASIS frames the distinction as “When did or will something happen?” and “When did we learn that it happened?” OASIS temporal-data extension

#1 Best Overall
Sale
Time Series Analysis
  • Used Book in Good Condition

How should an effective-dated rate history be structured?

Separate the enduring identity of a rate schedule from its changing values. A conceptual version record might include:

  • rate_id: identifies the rate schedule across versions.
  • rate_value: the rate for this version.
  • currency or unit: specifies what the value measures.
  • effective_from and effective_to: define the period when the version applies.

When a rate changes, close the old effective period and add a new version. Do not replace the old value in place if it must remain available as history. IBM’s temporal-modeling reference describes period beginnings as inclusive and endings as exclusive. IBM temporal data modeling

Use half-open intervals

A half-open interval includes its start and excludes its end. For example, a version effective from 2026-01-01 until 2026-02-01 applies during January, but not from the instant February begins. The next version can start exactly at 2026-02-01, so adjacent versions do not both claim the boundary.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

An as-of lookup can be expressed conceptually as:

SELECT rate_value
FROM rate_version
WHERE rate_id = :rate_id
  AND effective_from <= :as_of
  AND :as_of < effective_to;

This is illustrative SQL, not a tested query for a particular database engine. If the current period is open-ended, select one representation—such as a nullable effective_to or a documented high-date sentinel—and make the query and interval constraints consistent with it.

Define gaps and overlaps as business rules

The database cannot infer what an uncovered date means. Decide whether a gap means no rate exists, the previous rate carries forward, or the lookup should fail. Also prevent overlapping effective periods for the same rate identity; otherwise an as-of lookup could match more than one version.

When is system-time history or bitemporal history needed?

Effective time only

Use application-managed effective dates when the requirement is simply to determine which rate applies on a date and retain each version. This handles future schedules and business corrections to effective dates.

System time as well

Add system-time history or an append-only audit log when the requirement includes what the database contained before an edit. Microsoft describes SQL Server temporal tables as paired current and history tables with system-managed period columns. Updates and deletes preserve previous row versions, and FOR SYSTEM_TIME AS OF can reconstruct a prior database state. Microsoft also cautions that transaction-time periods may not match slowly changing-dimension business logic, particularly when incoming data is significantly delayed. Microsoft: SQL Server temporal tables · Microsoft: temporal-table usage scenarios

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Microsoft notes that SQL Server records a history row for a data modification even when no column values changed, so update patterns affect the audit trail. SQL Server’s temporal-table documentation describes the feature as built-in support for information about data stored at any point in time, rather than only current data. Microsoft: temporal tables

Bitemporal history

Use both business-effective and system-recorded periods when past effective dates can be corrected and users need both the corrected answer and the answer the database held at the time. For example, the model can answer both “What rate do we now believe applied on March 1?” and “What did the database believe on March 5 about the rate for March 1?”

SAP HANA Cloud distinguishes application-time periods, which represent application-specific business periods, from system versioning. Its documentation says application-time tables can be combined with system-versioned tables for bitemporal history. SAP HANA Cloud: application-time period tables

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How should transactions preserve the rate they used?

If a posted transaction must remain permanently tied to the precise rate version used when it was created, give each rate version its own stable key and store that key on the transaction. That preserves the transaction’s original relationship even when later versions are added or effective dates are corrected. This is a modeling recommendation; the cited database documentation does not prescribe it for every rate domain.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do database features map to effective-dated records?

Approach Time represented Useful for Important distinction
Application-managed effective dates Business-effective time Rates that apply on past, current, or future dates Retain a separate version per period and enforce domain-specific gap and overlap rules.
SQL Server system-versioned temporal tables Database system time Reconstructing prior stored row versions System transaction time is not a substitute for business-effective time.
SAP HANA Cloud application-time periods Application-specific business time Managing business periods independently of system timestamps SAP documents combining application-time tables with system versioning for bitemporal tables.
Bitemporal history Business-effective and database system time Retroactive corrections where prior recorded belief must remain queryable Maintains two distinct timelines, each answering a different as-of question.

In dimensional warehousing, Microsoft distinguishes Type 1 changes, which overwrite an old attribute, from Type 2 changes, which keep a separate row per version, usually with validity dates. Type 2 is conceptually aligned with preserving rate history. Microsoft: temporal-table usage scenarios

What should be checked before implementation?

  • Confirm whether the requirement concerns business-effective time, system time, or both.
  • Choose a consistent interval convention and open-ended-period representation.
  • Define whether gaps are allowed and what they mean.
  • Prevent overlapping periods for the same rate identity.
  • Decide how retroactive corrections should affect prior versions and audit history.
  • If posted transactions must retain their original rate, reference a version-specific key.
  • Check the target database’s documentation for its version-specific temporal behavior, as-of query support, interval constraints, and history-retention implications.

There is no universal performance or storage advantage established for one approach; those trade-offs depend on the workload and implementation.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.