# Working with Timezones in Baserow - UTC Storage Explained

> Every date in Baserow lives in UTC internally and displays per the field's own timezone setting. Covers todate_tz, filters, exports, and common cases.

Source: https://opennix.org/en/docs/baserow/fields/working-with-timezones/


Every date and time value in Baserow lives in UTC internally, and each date field decides on its own how that value is displayed. This article covers the difference between storage and display, how to fix a field's timezone, how the `todate_tz()` formula function works, and what happens to dates when you filter or export them.

## Overview

Baserow stores every date and time internally in Coordinated Universal Time (UTC), no matter where a given user happens to be. That guarantees data stays consistent regardless of location. Display, on the other hand, is configurable per field: a timezone setting converts the stored UTC value into a meaningful local time.

Timezone configuration happens at the field level, which means you can show some date fields in each collaborator's own local time while pinning others to a single shared timezone. That dual approach covers both global coordination (a meeting time shown in each attendee's own zone) and location-specific needs (store hours always shown in the store's own zone).

Understanding how Baserow handles timezones heads off common mistakes: scheduling a meeting at the wrong hour, misreading a deadline across time zones, or showing an international team a confusing date value.

![Working with timezones in Baserow](/images/baserow/fields/baserow-timezones-overview.webp)

## How Baserow stores and displays dates

### Internal storage (UTC)

Every date is stored in UTC regardless of your own timezone or how a table displays it. That universal storage format guarantees:

- **data consistency:** the same stored value represents the same moment everywhere in the world;
- **accurate calculations:** time differences and date arithmetic work correctly;
- **reliable import and export:** data transfers keep their exact timestamps;
- **API integration:** external systems receive standardized UTC values.

### Display format (set per field)

Storage always uses UTC, but display can work one of two ways through [field configuration](/docs/baserow/fields/field-customization/):

**Each user's local timezone (the default):**

- every collaborator sees dates converted to their own device's timezone;
- a meeting at "3:00 PM" shows as 3 PM in New York, 8 PM in London, 9 AM in Tokyo;
- best for collaborative scheduling, deadline tracking, and global event management.

**A fixed timezone for everyone:**

- every collaborator sees the same specified timezone regardless of location;
- a store opening at "9:00 AM Pacific" shows as 9 AM Pacific for everyone;
- best for location-specific times, business hours, and regional events.

![Displaying dates across different timezones](/images/baserow/fields/baserow-timezones-display-example.png)

## Timezone configuration methods

| Method | What it does | Applies to |
|---|---|---|
| **Field setting** | One consistent timezone for the entire field | Every row in that field |
| **Formula (`todate_tz`)** | A dynamic timezone based on a condition | Calculated per row |
| **User's local time** | Shows the time in each user's own timezone | Default behavior |

## How to set a timezone for a date field

Configure a specific timezone that every collaborator will see for a particular date field.

**To set a fixed timezone:**

1. click the **dropdown arrow** next to the date field's name;
2. select **Edit field** from the menu;
3. in the field configuration panel, enable **Set timezone for all collaborators**;
4. pick the timezone you want from the dropdown (for example, "America/New_York," "Europe/London");
5. click **Save** to apply it.

![Setting a timezone in a date field's configuration](/images/baserow/fields/baserow-timezone-field-setting.png)

The default timezone is GMT/UTC. Once you set a timezone, every user sees dates in that zone regardless of where they are.

**Example:** set your "Store opening time" field to "America/Los_Angeles" so every team member sees Pacific time, whether they're in California, New York, or Tokyo.

## How to use timezone formulas

Use the `todate_tz` formula function to display dates in different timezones based on row-specific conditions, or to build several timezone representations of the same date. It returns the first argument converted into a date, given a date format string as the second argument and a target timezone as the third.

### todate_tz function syntax

```
todate_tz('date_value', 'format', 'timezone')
```

**Parameters:**

- **date_value:** a date string or a field reference to convert;
- **format:** the date format pattern to apply;
- **timezone:** the target timezone (see the supported list below).

**Example formulas:**

```
// Convert a date string to Amsterdam time
todate_tz('20210101', 'YYYYMMDD', 'Europe/Amsterdam')

// Convert a field value to Tokyo time
todate_tz(field('Event Date'), 'YYYY-MM-DD', 'Asia/Tokyo')

// Conditional timezone based on a region field
if(field('Region')='Europe',
   todate_tz(field('Date'), 'YYYY-MM-DD', 'Europe/London'),
   todate_tz(field('Date'), 'YYYY-MM-DD', 'America/New_York'))
```

### Use cases for timezone formulas

**Multi-region operations:** show an event's time in its regional headquarters' timezone based on a region field.

**Timezone conversion tables:** build fields that display the same moment across several timezones - event time in UTC, in EST, in JST.

**Historical data migration:** convert dates from older systems that used a different timezone convention.

**Compliance requirements:** show audit timestamps in a specific regulatory timezone while data stays stored in UTC.

## Timezone behavior with filters and exports

### Filtering dates with timezones

When you apply a [date filter](/docs/baserow/views/filters-in-baserow/), Baserow evaluates it against the field's configured timezone:

- **field on the user's local time:** the filter evaluates against that user's current timezone;
- **field on a fixed timezone:** the filter evaluates against that timezone;
- **field in UTC:** the filter evaluates against UTC directly.

That's what makes "show me today's appointments" return the right result regardless of how the field's timezone is configured.

### Exporting dates with timezones

**Copy and paste:**

- if **Show timezone** is enabled in the field's configuration, copied values include the timezone offset;
- for example: "2025-01-15 14:00:00 EST" instead of "2025-01-15 14:00:00."

**CSV/Excel export:**

- exported dates include timezone information when it's configured;
- the exact format depends on the field's timezone and format settings;
- import tools can preserve that timezone data for a clean round trip.

## Common timezone scenarios

### Scenario 1: scheduling across a global team

**Challenge:** schedule a meeting for team members in New York, London, and Tokyo.

**Solution:** use a date field on the user's local time (the default). Enter "2:00 PM EST" and each person sees it converted: 2 PM EST, 7 PM GMT, 3 AM JST.

### Scenario 2: store operating hours

**Challenge:** show consistent store hours no matter where an employee is viewing the table from.

**Solution:** set the field's timezone to the store's own zone (for example, "America/Chicago"). Every employee sees "9:00 AM - 6:00 PM Central" regardless of their own location.

### Scenario 3: multi-region event management

**Challenge:** a company runs events across several regions, each needing its own local time display.

**Solution:** use the `todate_tz` formula alongside a region field to show the right timezone for each event.

### Scenario 4: auditing historical timestamps

**Challenge:** compliance requires showing when an action happened in a specific regulatory timezone.

**Solution:** create a formula field that converts the created-on field to the regulatory timezone using `todate_tz`.

## Frequently asked questions

**What happens if I change a field's timezone setting?** Baserow immediately recalculates the display for every date in that field. The underlying UTC storage never changes - only the display conversion does, so you can switch timezones freely without losing accuracy.

**Can different views of the same table show different timezones?** No, timezone configuration lives at the field level, not the view level - every view shows the same timezone for a given field. To display several timezones at once, build separate formula fields using `todate_tz` for each one you need.

**How does Baserow handle daylight saving time?** Baserow uses the IANA timezone database, which includes daylight-saving rules for every supported zone. Dates adjust automatically across DST transitions, so a meeting at "2:00 PM Eastern" displays correctly whether EST or EDT applies.

**What timezone does a new date field use by default?** New date fields default to the user's device timezone, detected automatically from browser settings. You can switch it to a fixed timezone immediately, or leave it on user-local.

**Can I use timezone formulas in a regular date field, or only in a formula field?** The `todate_tz` function only works inside a formula field. A regular date field uses the timezone setting in its own configuration panel; for dynamic behavior, build a formula field that references the date field instead.

**What happens to timezones when I import data?** During a CSV/Excel import, specify whether the data includes timezone information. Baserow tries to parse any timezone offset and convert it to UTC storage; if none is specified, it assumes UTC or asks you to specify the source timezone.

## Supported timezones

Baserow supports every standard IANA timezone identifier. Pick one from the dropdown in a field's configuration, or reference it directly inside a `todate_tz` formula.

**Africa:** Africa/Abidjan, Africa/Accra, Africa/Addis_Ababa, Africa/Algiers, Africa/Cairo, Africa/Casablanca, Africa/Johannesburg, Africa/Lagos, Africa/Nairobi, Africa/Tripoli, Africa/Tunis, and other cities in the region.

**Americas:** America/Anchorage, America/Bogota, America/Chicago, America/Denver, America/Los_Angeles, America/Mexico_City, America/New_York, America/Sao_Paulo, America/Toronto, America/Vancouver, and other cities in the region.

**Antarctica:** Antarctica/Casey, Antarctica/Davis, Antarctica/Mawson, Antarctica/Palmer, Antarctica/Rothera, and other research stations.

**Asia:** Asia/Almaty, Asia/Baku, Asia/Bangkok, Asia/Dubai, Asia/Hong_Kong, Asia/Kolkata, Asia/Seoul, Asia/Shanghai, Asia/Singapore, Asia/Tokyo, Asia/Vladivostok, and other cities in the region.

**Atlantic:** Atlantic/Azores, Atlantic/Bermuda, Atlantic/Canary, Atlantic/Cape_Verde, Atlantic/Reykjavik, and others.

**Australia:** Australia/Adelaide, Australia/Brisbane, Australia/Darwin, Australia/Melbourne, Australia/Perth, Australia/Sydney, and other cities in the region.

**Europe:** Europe/Amsterdam, Europe/Berlin, Europe/Kiev, Europe/London, Europe/Madrid, Europe/Moscow, Europe/Paris, Europe/Rome, Europe/Warsaw, and other cities in the region.

**Indian Ocean:** Indian/Chagos, Indian/Maldives, Indian/Mauritius, Indian/Reunion, and others.

**Pacific:** Pacific/Auckland, Pacific/Fiji, Pacific/Guam, Pacific/Honolulu, Pacific/Tahiti, and other islands in the region.

**Other:** GMT, UTC.

## What's next

Once timezones are set up, read [Footer Aggregation](/docs/baserow/fields/footer-aggregation/) to add sums, averages, and other summaries across a column, including date fields. For the complete list of field types, see [Field Types Overview](/docs/baserow/fields/baserow-field-overview/).

