TimeTonic Functions & Operators: The complete guide to V2 formulas

The full reference for V2 formulas: from basic operators to advanced date, text and geolocation functions.
TimeTonic Team
March 2, 2026
Share it 🚀
TimeTonic Functions & Operators: The Complete Guide to V2 Formulas

TimeTonic Functions & Operators:
The Complete Guide to V2 Formulas

In TimeTonic, a formula column doesn't simply display a value: it calculates, transforms and adapts it in real time. With V2 formulas, you have access to a powerful calculation engine that combines date, text, numeric and logical functions to automate your business processes, without writing a single line of code. This guide explains how it works, what each function family does, and provides the complete list of all available functions with their exact syntax and concrete examples.


New Functions

TimeTonic's formula engine is constantly evolving. Every time our engineering team ships a new function, it appears in the table below, so you always have an up-to-date view of the latest additions, without having to dig through release notes. The functions listed here are also documented in the relevant category tables further down this guide.

FunctionSyntaxExampleDescription
AVERAGE AVERAGE(val1, val2, ...) AVERAGE(10, 15, 20) ➡️ 15 Calculates the mean of a set of numbers.
CEILING CEILING(value) CEILING(4.3) ➡️ 5 Rounds a number up to the nearest integer.
COUNTIF COUNTIF(value, criterion, separator) COUNTIF("101 205 301 50", ">100", " ") ➡️ 3 Counts elements in a text or relational field that match a criterion, after splitting by separator.
FIND FIND(find, within, start_pos) FIND("A", "BANANA", 1) ➡️ 2 Returns the exact position of a substring (case-sensitive).
FLOOR FLOOR(value) FLOOR(4.3) ➡️ 4 Rounds a number down to the nearest integer.
INT INT(value) INT(3.7) ➡️ 3 Returns the integer part of a number, rounding down.
ISO_WEEKNUM ISO_WEEKNUM(date) ISO_WEEKNUM(2026-01-01) ➡️ 1 Returns the ISO week number of a date (weeks start Monday; week 1 contains the first Thursday of the year).
LEFT LEFT(text, number) LEFT("ABC1234", 3) ➡️ "ABC" Extracts the first n characters of a string.
LENGTH LENGTH(text) LENGTH("Hello") ➡️ 5 Returns the number of characters in a string (spaces included).
LOWER LOWER(text) LOWER("HELLO WORLD") ➡️ "hello world" Converts all letters to lowercase.
MEDIAN MEDIAN(val1, val2, ...) MEDIAN(3, 1, 8, 9, 2) ➡️ 3 Returns the median value of a set of numbers.
REGEXEXTRACT REGEXEXTRACT(text, pattern) REGEXEXTRACT("order n°24158", "[0-9]+") ➡️ "24158" Extracts the first value matching a regular expression.
REGEXMATCH REGEXMATCH(text, pattern) REGEXMATCH("ref T51234", "([A-Z].*([0-9]){5}") ➡️ true Checks whether a text matches a regular expression. Returns true or false.
REGEXREPLACE REGEXREPLACE(text, pattern, replacement?) REGEXREPLACE("Supermarket", "Super", "Hyper") ➡️ "Hypermarket" Replaces all matches of a regular expression with new text.
REPLACE REPLACE(text, position, length, new_text) REPLACE("TimeTonic", 1, 4, "Demo") ➡️ "DemoTonic" Replaces a portion of text defined by a position and a length.
RIGHT RIGHT(text, number) RIGHT("ABC1234", 4) ➡️ "1234" Extracts the last n characters of a string.
ROUND ROUND(value, precision) ROUND(3.14159, 2) ➡️ 3.14 Rounds a value to the desired number of decimal places.
ROWID ROWID() ROWID() ➡️ "jklm1234" Returns the unique technical identifier of a row. Allows stable row referencing.
SEARCH SEARCH(find, within, start_pos) SEARCH("ban", "Banana", 1) ➡️ 1 Returns the position of a substring (case-insensitive).
STDEV STDEV(val1, val2, ...) STDEV(4, 5, 8, 10) ➡️ 2.75 Calculates the standard deviation of a set of numbers.
SUBSTITUTE SUBSTITUTE(text, old, new, instance?) SUBSTITUTE("TT-2026-01", "TT", "TM") ➡️ "TM-2026-01" Replaces one or more occurrences of a string with another.
SWITCH SWITCH(source, val1, res1, val2, res2, ..., default) SWITCH(Status, "New","Urgent", "Completed","Closed", "Unknown") Compares an expression against multiple cases and returns the first matching result. Replaces nested IF() chains.
TRIM TRIM(text) TRIM(" Hello world ") ➡️ "Hello world" Removes leading, trailing and extra internal spaces.
UPPER UPPER(text) UPPER("lorem ipsum") ➡️ "LOREM IPSUM" Converts all letters to uppercase.
WEEKNUM WEEKNUM(date) WEEKNUM(2026-01-10) ➡️ 2 Returns the week number of a date (weeks start Sunday; week 1 contains 1 January).

TimeTonic formulas: far more than a simple spreadsheet

The difference between a text field and a formula column

A text field stores what you type. A formula column, on the other hand, automatically calculates its value from other columns, today's date, or rules you define. The result: your data stays up to date at all times, with no manual intervention required.

In practice, this means you can display the age of a contract in days, automatically flag out-of-stock items, or build a unique identifier from a team member's name and start date | all without leaving TimeTonic.

What functions let you automate without coding

📅
Time management
Deadline calculations, seniority tracking, follow-up alerts, working-day durations.
🔤
Data formatting
Concatenation, masking, extraction, normalisation of text and identifiers.
🔢
Business calculations
Margins, rounding, averages, totals, currency amount formatting.
🧠
Conditional logic
Automatic qualification, dynamic statuses, business-rule alerts.
📍
Geolocation
Convert addresses to coordinates, calculate straight-line distances.
🔗
URL generation
Build dynamic links and trigger actions via URL on every row change.

How formulas work: the logic behind them

Functions, operators, fields and constants

Every TimeTonic formula is built from four basic building blocks. Functions are the operations to perform (calculate a date gap, convert to uppercase, round a number…). Operators compare or combine values (==, >, and…). Fields are your TimeTonic columns, referenced in the editor with the $ symbol or selected from the glossary panel. Constants are fixed values you type directly, such as a number or a quoted string.

Nesting: formulas inside formulas

The real power of V2 formulas lies in their ability to nest: the result of one function can become the argument of another. This is what allows you to build sophisticated logic in a single expression.

Here is a concrete example: determining whether a person is a minor or an adult based on their date of birth.

YEAR_ADD(Date of birth, 18) > TODAY() ? "Minor" : "Adult" If date of birth + 18 years is greater than today → "Minor", otherwise → "Adult"

Here, YEAR_ADD() first calculates the majority date, then the result is compared to TODAY() via the ternary condition. Three nested elements, one readable result.

Output format: controlling what users see

Once your formula is written, the Output format tab lets you define how the result is displayed: plain text, multi-line text, URL, date (with or without time), number (with rounding and currency symbol), or geographic coordinates.

⚠️ Watch out for format compatibility. Not all output formats are compatible with each other. You cannot convert a URL to a number, nor a date to a number. If formats are incompatible, the formula returns an empty result. To avoid this, use FORMAT_DATE() or FORMAT_NUMBER(), which always returns text, which is compatible with almost everything.
💡 After every formula change, remember to click "Refresh formulas" in the column menu to recalculate values across all your rows.

Operators: compare, combine, condition

Comparison, arithmetic and logical operators

Operators are the logical and arithmetic connectors of your formulas. They let you compare two values, perform mathematical operations, or combine multiple conditions.

NameSyntaxExampleDescription
EQUAL == 5 == 5 ➡️ true Checks whether two values are equal.
NOT EQUAL != 5 != 3 ➡️ true Checks whether two values are different.
LESS THAN < 3 < 5 ➡️ true Checks whether a value is strictly less than another.
MORE THAN > 5 > 3 ➡️ true Checks whether a value is strictly greater than another.
LESS OR EQUAL <= 3 <= 5 ➡️ true Checks whether a value is less than or equal to another.
MORE OR EQUAL >= 5 >= 5 ➡️ true Checks whether a value is greater than or equal to another.
AND and age > 18 and city == "London" Returns true if all conditions are true.
OR or age > 18 or city == "London" Returns true if at least one condition is true.
NOT not NOT age > 18 Inverts a condition. True if the condition is false.
IN in IN("5", [1, 2, 3, 5]) ➡️ true Checks whether a value belongs to a set of values.
PLUS + 5 + 3 ➡️ 8 Adds two values.
MINUS - 5 - 3 ➡️ 2 Subtracts one value from another.
MULTIPLY * 5 * 3 ➡️ 15 Multiplies two values.
DIVIDE / 15 / 3 ➡️ 5 Divides one value by another.
MODULO % 10 % 3 ➡️ 1 Returns the remainder of a division. Useful for even/odd checks or cycle management.
POWER ** 2 ** 3 ➡️ 8 Raises a value to the power of another.
TERNARY CONDITION condition ? ifTrue : ifFalse X > 5 ? "Yes" : "No" Returns one of two values based on the result of a condition. The most powerful operator for conditional display.

Business use case: automatically qualify a lead by score

A sales rep manages their prospects in TimeTonic. Each prospect has a score from 0 to 100. Using the ternary condition, a formula column automatically displays the qualification:

Score >= 80 ? "Hot" : Score >= 50 ? "Warm" : "Cold" Score ≥ 80 → "Hot" | Score ≥ 50 → "Warm" | Otherwise → "Cold"

Date Functions: managing time in your processes

Date functions are among the most widely used in TimeTonic. They allow you to calculate durations, add delays, extract a day or a quarter, and compare dates: in calendar days or working days.

FunctionSyntaxExampleDescription
TODAY TODAY() TODAY() Returns today's date.
DATE_ADD DATE_ADD(date, number) DATE_ADD(TODAY(), 7) Adds X calendar days to a date.
DATE_ADDNB DATE_ADDNB(date, number) DATE_ADDNB(TODAY(), 10) Adds X working days to a date.
DATEHOUR_ADD DATEHOUR_ADD(date, number) DATEHOUR_ADD('2024-09-17 12:00:00', 2) Adds X hours to a date-time column.
DATEMINUTE_ADD DATEMINUTE_ADD(date, number) DATEMINUTE_ADD('2024-09-17 12:00:00', 30) Adds X minutes to a date-time column.
WEEK_ADD WEEK_ADD(date, number) WEEK_ADD('2024-09-17', 2) Adds X weeks to a date.
MONTH_ADD MONTH_ADD(date, number) MONTH_ADD('2024-09-17', 3) Adds X months to a date.
YEAR_ADD YEAR_ADD(date, number) YEAR_ADD('2024-09-17', 1) Adds X years to a date.
DAY_DELTA DAY_DELTA(date1, date2) DAY_DELTA('2024-09-17', '2024-09-10') ➡️ 7 Calculates the difference between two dates in days.
DAY_OPEN_DELTA DAY_OPEN_DELTA(date1, date2) DAY_OPEN_DELTA('2024-09-17', '2024-09-10') Calculates the difference between two dates in working days.
DAY_DELTA_TODAY DAY_DELTA_TODAY(date) DAY_DELTA_TODAY('2024-09-10') ➡️ 7 Calculates the number of days between a date and today.
WEEK_DELTA WEEK_DELTA(date1, date2) WEEK_DELTA('2024-09-17', '2024-08-01') ➡️ 7 Calculates the difference between two dates in weeks.
WEEK_DELTA_TODAY WEEK_DELTA_TODAY(date) WEEK_DELTA_TODAY('2024-08-01') ➡️ 7 weeks Calculates the number of weeks between a date and today.
MONTH_DELTA MONTH_DELTA(date1, date2) MONTH_DELTA('2024-09-17', '2023-09-17') ➡️ 12 Calculates the difference between two dates in months.
YEAR_DELTA_TODAY YEAR_DELTA_TODAY(date) YEAR_DELTA_TODAY('2023-09-17') ➡️ 1 year Calculates the number of years between a date and today.
TIME TIME(datetime) TIME('12:30') ➡️ '12:30' Extracts the time from a date-time column.
TIME_DELTA TIME_DELTA(datetime1, datetime2) TIME_DELTA('14:30', '12:30') ➡️ 2h Subtracts two date-time columns; result in minutes.
HOUR_DELTA HOUR_DELTA(datetime1, datetime2) HOUR_DELTA('2024-09-17 14:00', '2024-09-17 12:00') ➡️ 2 Subtracts two date-time columns; result in hours.
DAY DAY(date) DAY('2024-09-17') ➡️ 17 Extracts the day number of the month.
DAY_IN_WEEK DAY_IN_WEEK(date) DAY_IN_WEEK('2024-09-17') ➡️ 2 Returns the day number within the week (week starts Monday).
WEEK WEEK(date) WEEK('2024-09-17') ➡️ 38 Returns the week number in the year.
MONTH MONTH(date) MONTH('2024-09-17') ➡️ 9 Returns the month number (1–12).
QUARTER QUARTER(date) QUARTER('2024-09-17') ➡️ 3 Returns the quarter number (1–4).
YEAR YEAR(date) YEAR('2024-09-17') ➡️ 2024 Extracts the year from a date.
YEAR_WEEK YEAR_WEEK(date) YEAR_WEEK('2024-09-17') ➡️ 2024-38 Returns the year and week number together.
YEAR_MONTH YEAR_MONTH(date) YEAR_MONTH('2024-09-17') ➡️ 2024-09 Returns the year and month. Ideal for grouping by period.
YEAR_QUARTER YEAR_QUARTER(date) YEAR_QUARTER('2024-09-17') ➡️ 2024-Q3 Returns the year and quarter.
MIN_DATE_ELEMENTS MIN_DATE_ELEMENTS(date1, date2, ...) MIN_DATE_ELEMENTS('2023-01-01','2023-06-01') ➡️ '2023-01-01' Returns the earliest date among the selected columns.
MAX_DATE_ELEMENTS MAX_DATE_ELEMENTS(date1, date2, ...) MAX_DATE_ELEMENTS('2023-01-01','2023-06-01') ➡️ '2023-06-01' Returns the most recent date among the selected columns.
FORMAT_DATE FORMAT_DATE(value, format) FORMAT_DATE(TODAY(), 'DD/MM/YYYY') Formats a date using a chosen pattern. Always returns text | recommended to avoid format incompatibilities.
READ_DATE READ_DATE(text_value, format, "classic|extended") READ_DATE("25-12-2024", "DD-MM-YYYY", "classic") Converts a text string into a date using the specified format.
TEXT_DAY TEXT_DAY(date) TEXT_DAY('2024-09-17') ➡️ 'Tuesday' Returns the name of the day of the week for a given date.
ISO_WEEKNUM ISO_WEEKNUM(date) ISO_WEEKNUM(2026-01-01) ➡️ 1 ISO week number (weeks start Monday; week 1 contains the first Thursday of the year).
WEEKNUM WEEKNUM(date) WEEKNUM(2026-01-10) ➡️ 2 Week number (weeks start Sunday; week 1 contains 1 January).

Business use case: deadline tracking and follow-up alerts

A contract manager wants to know how many days remain before each contract expires, and flag those expiring within 30 days.

// Column "Days remaining"
DAY_DELTA(TODAY(), Expiry date) Number of days between today and the expiry date
// Column "Alert"
DAY_DELTA(TODAY(), Expiry date) <= 30 ? "⚠️ Renewal needed" : "✅ OK" Under 30 days → "⚠️ Renewal needed" | Otherwise → "✅ OK"

Text Functions: personalise and structure your information

Text functions let you format, extract, transform and secure your alphanumeric data. They are particularly useful for normalising entries, building identifiers, personalising messages or masking sensitive data.

FunctionSyntaxExampleDescription
UPPER UPPER(text) UPPER("lorem ipsum") ➡️ "LOREM IPSUM" Converts all letters to uppercase.
LOWER LOWER(text) LOWER("HELLO WORLD") ➡️ "hello world" Converts all letters to lowercase.
TRIM TRIM(text) TRIM(" Hello world ") ➡️ "Hello world" Removes leading, trailing and extra internal spaces.
LENGTH LENGTH(text) LENGTH("Hello") ➡️ 5 Returns the number of characters in a string (spaces included).
LEFT LEFT(text, number) LEFT("ABC1234", 3) ➡️ "ABC" Extracts the first n characters. Ideal for isolating a prefix or code.
RIGHT RIGHT(text, number) RIGHT("ABC1234", 4) ➡️ "1234" Extracts the last n characters. Useful for the end of an identifier.
SUBSTR SUBSTR(text, start, length) SUBSTR('Hello world', 0, 5) ➡️ "Hello" Extracts a number of characters starting from a given position.
SEARCH SEARCH(find, within, start_pos) SEARCH("ban", "Banana", 1) ➡️ 1 Returns the position of a substring (case-insensitive).
FIND FIND(find, within, start_pos) FIND("A", "BANANA", 1) ➡️ 2 Returns the position of a substring (case-sensitive).
REPLACE REPLACE(text, position, length, new_text) REPLACE("TimeTonic", 1, 4, "Demo") ➡️ "DemoTonic" Replaces a portion of text defined by a position and a length.
SUBSTITUTE SUBSTITUTE(text, old, new, instance?) SUBSTITUTE("TT-2026-01", "TT", "TM") ➡️ "TM-2026-01" Replaces one or more occurrences of a string with another.
REGEXEXTRACT REGEXEXTRACT(text, pattern) REGEXEXTRACT("order n°24158", "[0-9]+") ➡️ "24158" Extracts the first value matching a regular expression.
REGEXREPLACE REGEXREPLACE(text, pattern, replacement?) REGEXREPLACE("Supermarket", "Super", "Hyper") ➡️ "Hypermarket" Replaces all matches of a regular expression.
REGEXMATCH REGEXMATCH(text, pattern) REGEXMATCH("ref T51234", "([A-Z].*([0-9]){5}") ➡️ true Checks whether a text matches a regular expression. Returns true or false.
EXTRACT_ELEMENT EXTRACT_ELEMENT(value, number, separator) EXTRACT_ELEMENT('apple,banana,cherry', 2, ",") ➡️ "banana" Extracts an element from a list by its position and separator.
APPLY_MASK APPLY_MASK(text, mask) APPLY_MASK('1234567890', XXXXXX@@@@) ➡️ "7890" Masks (X) or reveals (@) characters in a string. Useful for protecting sensitive data.
HTML_TO_TEXT HTML_TO_TEXT(text) HTML_TO_TEXT('<p>Hello world!</p>') ➡️ "Hello world!" Converts HTML into readable plain text by stripping tags.
FORMAT_NUMBER FORMAT_NUMBER(value, format) FORMAT_NUMBER(12345.678, '0,0.00') Formats a number with thousands separator and decimals. Always returns text.

Business use case: building a client reference and masking sensitive data

// Client reference = first 3 letters of last name + entry year
CONCAT( UPPER(LEFT(Last name, 3)), "-", YEAR(Entry date) ) E.g.: "SMI-2024" for Smith joining in 2024

Numeric Functions: take control of your figures

From statistical functions to rounding and multi-value column summation, TimeTonic covers all business calculation needs without having to export to an external spreadsheet.

FunctionSyntaxExampleDescription
INT INT(value) INT(3.7) ➡️ 3 Returns the integer part of a number, rounding down.
ROUND ROUND(value, precision) ROUND(3.14159, 2) ➡️ 3.14 Rounds a value to the desired number of decimal places.
CEILING CEILING(value) CEILING(4.3) ➡️ 5 Rounds up to the nearest integer.
FLOOR FLOOR(value) FLOOR(4.3) ➡️ 4 Rounds down to the nearest integer.
SUM SUM(val1, val2, ...) SUM(10, 20, 30) ➡️ 60 Adds the contents of multiple columns together.
SUBSTRACT SUBSTRACT(val1, val2, ...) SUBSTRACT(100, 45) ➡️ 55 Subtracts the values of multiple columns from one another.
MIN MIN(val1, val2, ...) MIN(10, 25, 5) ➡️ 5 Returns the smallest value among the selected columns.
MAX MAX(val1, val2, ...) MAX(10, 25, 5) ➡️ 25 Returns the largest value among the selected columns.
AVERAGE AVERAGE(val1, val2, ...) AVERAGE(10, 15, 20) ➡️ 15 Calculates the mean of a set of numbers.
MEDIAN MEDIAN(val1, val2, ...) MEDIAN(1, 2, 3, 4) ➡️ 2.5 Returns the median value of a set of numbers.
STDEV STDEV(val1, val2, ...) STDEV(4, 5, 8, 10) ➡️ 2.75 Calculates the standard deviation of a set of numbers.
NB_ELEMENTS NB_ELEMENTS(val1, val2, ...) NB_ELEMENTS('apple','banana','cherry') ➡️ 3 Returns the count of elements across the selected columns.
SUM_ELEMENTS SUM_ELEMENTS(val1, val2, ...) SUM_ELEMENTS(10, 20, 30) ➡️ 60 Sums numeric values from columns that may contain multiple comma-separated values.
MIN_NUM_ELEMENTS MIN_NUM_ELEMENTS(val1, val2, ...) MIN_NUM_ELEMENTS(10, 20, 5) ➡️ 5 Returns the smallest value across selected columns (multi-value support).
MAX_NUM_ELEMENTS MAX_NUM_ELEMENTS(val1, val2, ...) MAX_NUM_ELEMENTS(10, 20, 5) ➡️ 20 Returns the largest value across selected columns (multi-value support).

Business use case: calculate a VAT-inclusive price and format the display

FORMAT_NUMBER( ROUND(Price excl. VAT * 1.2, 2), '0,0.00' ) E.g.: 1,250.00 (for an ex-VAT price of 1041.67)

Other functions: logic, geolocation and utilities

Beyond the main families, TimeTonic offers advanced utility functions: multi-case conditional logic, geolocation, dynamic URL construction, empty-cell checking, and technical row identifiers.

FunctionSyntaxExampleDescription
IF IF(condition, ifTrue, ifFalse) IF(age > 18, "adult", "minor") Returns a value based on whether a condition is true or false.
SWITCH SWITCH(source, val1, res1, val2, res2, ..., default) SWITCH(Status, "New","Urgent", "Completed","Closed", "Unknown") Compares an expression against multiple cases and returns the first matching result. A powerful replacement for nested IF() chains.
CONCAT CONCAT(param1, param2, ...) CONCAT("First"," ","Last") ➡️ "John Smith" Concatenates multiple fields and text values into a single string.
CONCAT_URL CONCAT_URL(param1, param2, ...) CONCAT_URL("https://example.com/", "user/123") Dynamically builds a URL to generate a personalised link.
URL_TRIGGER URL_TRIGGER(text) URL_TRIGGER('https://example.com') Fires the specified URL on every table change. Table and row IDs are passed as parameters.
COUNTIF COUNTIF(value, criterion, separator) COUNTIF("101 205 301 50", ">100", " ") ➡️ 3 Counts elements in a text or relational field that match a criterion, after splitting by separator.
IS_EMPTY IS_EMPTY(value) IF(IS_EMPTY(Name), "Name missing", "Name defined") Checks whether a field is empty. Compatible with text, date, number, list and relation types.
EMPTY EMPTY(value) EMPTY(Name) ➡️ true if empty Checks whether a value is empty. Returns true or false.
ROWID ROWID() ROWID() ➡️ "jklm1234" Returns the unique technical identifier of a row. Allows stable row referencing.
GEOLOC GEOLOC(text) GEOLOC('10 Downing Street, London') ➡️ (51.50; -0.12) Converts a postal address into geographic coordinates (latitude, longitude).
COORDINATES COORDINATES(valueX, valueY) COORDINATES(123, 456) Creates an X/Y coordinate pair. Useful for storing geographic points or locations.
COORDX COORDX(coordinates) COORDX(COORDINATES(123, 456)) ➡️ 123 Extracts the X value from a coordinate pair.
COORDY COORDY(coordinates) COORDY(COORDINATES(123, 456)) ➡️ 456 Extracts the Y value from a coordinate pair.
DISTANCE DISTANCE(coordA, coordB) DISTANCE([Coordinate A], [Coordinate B]) Calculates the straight-line distance between two coordinates, in metres.

Business use case: dynamic status display with SWITCH

Rather than nesting multiple IF() calls, SWITCH() makes status mappings far more readable and maintainable:

SWITCH(
  Status,
  "New", "🔴 Urgent",
  "In Progress", "🟡 In progress",
  "Completed", "🟢 Closed",
  "Cancelled", "⚫ Cancelled",
  "❓ Unknown"
) Displays the colour-coded label matching the row's status

Best practices for your TimeTonic formulas

Select columns rather than typing them manually

In the formula editor, type $ to bring up your table's column list, or select them directly from the "Table fields" panel. This eliminates typos in column names: a frequent cause of formulas that simply don't work.

Always refresh after modifying a formula

After every formula change, existing values do not automatically recalculate across all rows. Use the "Refresh formulas" option in the column menu to propagate changes across your entire dataset.

Use FORMAT_DATE and FORMAT_NUMBER to avoid incompatibilities

When combining multiple functions in a single formula | for example mixing text with a date : format conflicts can arise. By wrapping your dates and numbers in FORMAT_DATE() or FORMAT_NUMBER(), you always get text as output, which is compatible with virtually every use case.

Prefer SWITCH() over nested IF() chains

As soon as you have more than two cases to handle, SWITCH() is far more readable and maintainable than a cascade of nested IF(). Your formula will be easier for teammates to understand and simpler to update as your needs evolve.

Use indentation for readability

The TimeTonic editor includes an auto-indent button. On complex formulas with multiple nesting levels, use it systematically: a well-indented formula is ten times faster to read and debug.

Discover how TimeTonic transforms your databases into customized business tools: without development, without compromise.
Ask for your demo
Create your business apps easily with NoCode
Start now

Thirsty for more ?

These other blog posts may be interesting for you
illustration for TimeTonic or Notion: which NoCode solution to choose?
June 11, 2025
by 
TimeTonic Team
Knowledge
TimeTonic or Notion: which NoCode solution to choose?
A practical comparison between Notion and TimeTonic to help you choose the right no-code tool for your business needs
Read more
Illustration for The 10 best NoCode Tools in 2025: Creation, Automation, and Innovation blog article
March 18, 2025
by 
TimeTonic Team
Knowledge
The 10 best NoCode Tools in 2025: Creation, Automation, and Innovation
Discover the most effective NoCode solutions for developing applications, automating your workflows and managing your data without coding.
Read more
10 Benefits of NoCode and TimeTonic - Illustration image
June 28, 2023
by 
Jean-Michel Durocher
Knowledge
10 Benefits of NoCode and of TimeTonic
Simplification, Freedom, Centralisation, Automation... our CEO, Jean-Michel Durocher, explores the 10 most import benefits of NoCode and of TimeTonic
Read more