The TODATE function formats a date field according to the specified format.

In this article:

Sample usage

TODATE(response_time, 'NANOS', '%Y%m%d')
TODATE(create_time, 'DECIMAL_DATE', '%Y')


TODATE(field_expression, input_date_format, output_date_format)

Input formats

input_date_format is optional if field_expression is correctly configured as a semantic date.

TODATE accepts the following input format strings.

  • 'BASIC': %Y/%m/%d-%H:%M:%S

  • 'DEFAULT_DASH': %Y-%m-%d [%H:%M:%S]

  • 'DEFAULT_SLASH': %Y/%m/%d [%H:%M:%S]

  • 'DEFAULT_DECIMAL': %Y%m%d [%H:%M:%S

  • 'RFC_1123': for example, Sat, 24 May 2008 20:09:47 GMT

  • 'RFC_3339': for example, 2008-05-24T20:09:47Z

  • 'SECONDS': seconds since epoch

  • 'MILLIS': milliseconds since Epoch

  • 'MICROS': microseconds since Epoch

  • 'NANOS': nanoseconds since Epoch

  • 'JULIAN_DATE': days since Epoch


  • Any valid strptime format. Optional if the value is already a datetime field.

Output formats

TODATE accepts the following output format strings:

  • "%Y" - year
  • "%m" - month
  • "%d" - day
  • "%W" - yearweek number
  • "%w" - day of week
  • "%H" - hour
  • "%M" - minute


  • YYYYMMDD (canonical Data Studio date): "%Y%m%d"
  • Date Hour: "%Y%m%d%H"
  • Year Week: "%Y%W"
  • Year Month: "%Y%m"


TODATE returns the Text data type.

Was this helpful?
How can we improve it?