Skip to content

Privacy and preparation

Date shifting in de-identification: when it helps and when it breaks timelines

By SourceX Editorial · Updated

Short answer

Date shifting in de-identification moves every date linked to one person or customer by the same random offset, hiding the real calendar while keeping intervals intact. The rule: keep exact dates unless they identify someone, shift per entity with one consistent offset, and never shift dates that must line up with outside events.

Key takeaways

  • Most operational dates, such as ticket timestamps and invoice dates, do not identify anyone and can stay exact.
  • Shift dates per entity with one consistent offset so durations and sequences inside that entity survive.
  • A single unshifted date in free text can reveal the offset and undo the shift for the whole entity.
  • Shifting breaks seasonality, weekday patterns and comparisons across entities, so generalize instead when those matter.
  • The offset table is a re-identification key and must never travel with the dataset.

When should dates in business records be shifted?#

Dates in business records should be shifted only when they identify a person, alone or combined with other fields. A ticket opened on a Tuesday or an invoice paid at month end says nothing about who was involved, and shifting it destroys useful signal for no privacy gain.

Dates become identifying in a few predictable ways. Personal life dates such as birth, hire, termination and leave dates point to one employee or candidate. Visit dates tied to a household, such as a residential service call, can single out a family when combined with a neighborhood. Any date that coincides with a rare public event, such as a named storm, a product recall or a lawsuit filing, can connect an otherwise anonymous record to a known party.

For reference, the HIPAA Safe Harbor method, written for health data, removes all elements of dates except the year for dates directly related to an individual. Most operational datasets do not need to go that far, but the rule is a reminder that personal dates deserve the most attention.

When should dates in business records be shifted?
Date fieldTypical systemDefault treatment
Birth dateHRIS, ATS candidate profileRemove, or keep year only
Hire and termination datesHRIS, email signatures, Slack profilesGeneralize to month or year, or shift per person
Ticket created and resolvedZendesk, Intercom, JiraKeep exact, or shift per customer account
Job scheduled and completedServiceTitan, Housecall Pro, JobberShift or generalize per service location when residential
Invoice and payment datesNetSuite, QuickBooks, AcumaticaKeep exact for business customers
Release and deploy datesGitHub, GitLab, release notesKeep exact; often public already
Dates matching public incidentsIncident reports, outage ticketsGeneralize to month or exclude

How per-entity date shifting works#

Per-entity date shifting assigns each entity, such as a customer account, an employee or a service location, its own random offset and applies that offset to every date belonging to that entity. Because all of that entity's dates move together, the gap between a ticket's creation and its resolution, or between an estimate and the job it won, stays exactly the same.

Managed tools can do the arithmetic. Google's Sensitive Data Protection API, for example, includes a date-shifting transform that moves dates by a random number of days within a range you configure. The harder work is choosing the entity key and making sure every date, structured or not, passes through the same offset.

  • Choose the entity key: the person, account or location whose timeline must stay internally consistent.
  • Generate one random offset per entity and store it in a key table inside the preparation environment.
  • Apply the offset to every structured date field linked to that entity, including created, updated and closed timestamps.
  • Find and shift dates written in free text, subject lines, file names and attachment metadata.
  • Validate by recomputing intervals before and after shifting; they should match exactly.
  • Record which fields were shifted, by entity type, in the dataset documentation.
  1. 01Your work records
  2. 02Personal details removed
  3. 03You approve the release
  4. 04Licensed to AI developers
How it works with SourceX: Your work records → Personal details removed → You approve the release → Licensed to AI developers.Illustrative

Where date shifting breaks timelines#

Date shifting breaks any analysis that depends on the real calendar or on comparing entities with each other. Once two customers are shifted by different offsets, an outage that hit both on the same afternoon appears as two unrelated events far apart.

Operators feel this most. An HVAC contractor's call volume follows heat waves and cold snaps, and a distributor's exceptions spike around holidays and quarter-end. Shift those records by random offsets and the seasonal pattern dissolves. Software companies hit the same wall when a release fixes bugs reported by many customers: with per-customer offsets, the fix can appear to ship before the reports that prompted it.

Where date shifting breaks timelines
What the buyer wants to studySurvives per-entity shifting?Safer alternative
Time to resolve a ticket or complete a jobYesShift per entity
Sequence of events for one customerYesShift per entity
Seasonal demand or weather effectsNoKeep month, remove day and identifiers
Weekday staffing and dispatch patternsOnly if offsets are whole weeksShift in whole weeks or keep weekday only
Cross-customer incidents and releasesNoOne global offset, or generalize
Quarter-end and fiscal close behaviorNoKeep fiscal period labels, drop exact dates

Global offset, per-entity offset or generalization?#

The choice between a global offset, per-entity offsets and generalization depends on which relationships the dataset must preserve and how exposed the real dates are. A global offset moves everything by the same amount, so cross-entity comparisons survive, but one recognizable public event is enough to reveal it.

Generalization trades precision for safety and leaves no key to protect. Reducing dates to month, quarter or year keeps seasonality and long-run trends. Relative time, where each entity's first event becomes day zero, keeps durations and order without any calendar at all, which suits workflow studies such as escalation paths or quote-to-order cycles.

Global offset, per-entity offset or generalization?
MethodKeepsLosesBest when
Keep exact datesEverythingNothingDates do not identify anyone
Global offsetIntervals, cross-entity order, weekdays if whole weeksReal calendar; fragile if any anchor leaksShared events matter and public anchors are rare
Per-entity offsetIntervals and order within each entitySeasonality, cross-entity comparisonPersonal timelines identify people
Generalize to month or quarterSeasonality, trendsShort durationsDemand and volume studies
Relative time from first eventDurations, sequenceCalendar and seasonalityWorkflow and process studies
RemoveNothingAll timing signalBirth dates and similar personal dates

Dates hiding in free text#

Dates hiding in free text are the most common reason date shifting fails. A structured created-at field gets shifted, but the email body still mentions the March board meeting, and anyone who sees both values can compute the offset and reverse every other date for that entity.

Search every text field before release, in the formats people actually write: full dates, month and day without a year, holiday references, quarter labels and phrases such as since we opened. Quoted email replies are a frequent miss, because each quoted message carries its own original sent line. Ticket numbers, invoice numbers and file names sometimes embed a date as well.

Relative expressions, such as yesterday or by end of week, can usually stay, because they carry no anchor. The test is simple: could a reader combine this text with a shifted field to recover the real date? If yes, shift or generalize the text too.

Illustrative: a residential HVAC contractor's service history#

Illustrative: a fictional HVAC and plumbing contractor with several years of ServiceTitan history wants to license its service records: calls, estimates, jobs, technician notes, invoices and callbacks. Most customers are households, so a visit date combined with a neighborhood could point to a family.

The team first tried per-customer offsets. The buyer's questions centered on seasonal load and callback rates after summer installs, and the shifted data scattered every heat wave across the year. The team changed approach: exact dates became year and month plus weekday, addresses were reduced to a broad region, and each location's timeline was expressed as days since its first service call.

The result kept what mattered. Callback intervals, estimate-to-job conversion times and seasonal peaks survived, while no record carried an exact visit date for a household. The method, the fields affected and the reasons went into the dataset card so the buyer would not mistake generalized dates for errors.

How SourceX handles dates during preparation#

SourceX treats dates as a field-by-field decision in the Preparation step of the SourceX five-step transaction: Supply, Rights, Preparation, Approval and Delivery. Each date field is classified as keep, shift, generalize or remove, based on whether it identifies someone and what the licensed use requires.

The chosen method is recorded in the privacy record of the SourceX Evidence Packet, alongside provenance, licensing rights, permitted use and release authorization. Offset tables stay with the supplier or the preparer inside the staging environment, and the supplier approves the treatment before anything is released.

Frequently asked questions

Is date shifting enough to de-identify a dataset on its own?

No. Dates are one identifier among many. Names, email addresses, phone numbers, account numbers, street addresses and identifying details in free text still need their own treatment. Date shifting is a finishing step for timelines, applied after direct identifiers are removed, and it works best alongside generalized locations and rare job titles.

Should offsets be whole weeks?

Shifting by whole weeks keeps the day of the week, which matters for dispatch, staffing and support workload studies. The trade-off is a smaller set of possible offsets, which makes guessing easier. Use whole weeks when weekday patterns are part of the licensed use, and pair them with generalized locations so a guessed offset reveals little.

Can a licensee reverse shifted dates?

Only with the offset table or a real anchor date. Keep the table inside the preparation environment, never in the release package, and scan text for leftover real dates before delivery. GDPR Recital 26 treats pseudonymised data that could be attributed to a person using additional information as information on an identifiable person, which is why the key matters.

What about time of day and time zones?

Time of day rarely identifies anyone and is often valuable, for example for after-hours service calls or overnight support escalations. Time zones can reveal location, so normalize timestamps to a single zone such as UTC after shifting, and drop original zone offsets when location is sensitive.

How long should the offset table be kept?

Keep the offset table only as long as you may need to correct or reissue the dataset, then destroy it on the schedule set in the license and the preparation plan. Destroying it makes the shift irreversible, which strengthens de-identification but also rules out later fixes, so decide deliberately.

Sources

  • Google's Sensitive Data Protection API supports de-identification transforms including date shifting by a random number of days, up to 365,250 days in each direction. Source
  • The HIPAA Safe Harbor identifiers include all elements of dates except the year for dates directly related to an individual. Source
  • GDPR Recital 26 states that personal data which have undergone pseudonymisation, which could be attributed to a natural person by the use of additional information, should be considered information on an identifiable natural person. Source

Related resources

See if your company qualifies

A short company assessment. No data uploads are needed.

See if your company qualifies