HomeIntegrationsPricingLearn
Sign inGet started

Data to decisions, faster.

Book a Demo

Learn

  • Blog
  • Webinars
  • SQL tutorials

Legal & security

  • Privacy Policy
  • Terms of Use
  • Cookies Policy
  • Trust Center
  • Security

© 2026 Count Technologies Ltd. All rights reserved.

SQL Resources

Count is the best SQL IDE, wrapped up in the best data analysis tool, all inside the best BI platform.

ARRAY_AGG
Arrays Explained
Arrays Explained
CASE
CAST
DefinitionPractical InfoCommon QuestionsTroubleshooting Common ErrorsRelated Pages
COALESCE
CONCAT
COUNT [DISTINCT]
CURRENT_DATE
CURRENT_DATETIME
CURRENT_TIMESTAMP
DATETIME_DIFF
DATETIME_TRUNC
DATE_DIFF
DATE_TRUNC
Data Types
Dates and Times
EXTRACT
IF
MEDIAN
SUBSTR
String Functions Explained
TIMESTAMP_DIFF
TIMESTAMP_TRUNC
TIME_DIFF
TIME_TRUNC
UNNEST
Window Functions Explained
SQL Resources/BigQuery Standard SQL/CAST

CAST

CAST function. Definition, syntax, examples and common errors using BigQuery Standard SQL. CAST allows you to convert to different Data Types in BigQuery.

Definition

The CAST function allows you to convert between different Data Types in BigQuery.

Where typename is any of:

CAST (expr AS typename)
  • INT64, NUMERIC, BIGNUMERIC, FLOAT64, BOOL, STRING, BYTES, DATE, DATETIME, TIME, TIMESTAMP, ARRAY, STRUCT

You can read more about each type here.

str_numbernumber
33
88
2323

Practical Info

Converting a STRINGs to DATEs

SELECT
  str_number,
  CAST(TRIM(str_number) AS INT64) AS number
FROM
  (
    SELECT
      '     3' AS str_number
    UNION ALL
(    SELECT
      '8 ' AS str_number)
    UNION ALL
(    SELECT
      ' 23' AS str_number)
  ) AS table_3

When converting a STRING to DATE, the STRING must be in the format: YYYY-MM-DD

date1date2formatted_date2
null2020-02-01Feb 01,2020
ℹ️

In the example above date1 returns a NULL value since it's not in the right format. To re-format your strings check out the  page.

Similar rules apply for converting STRINGs to DATETIME, TIMESTAMP, and TIME:

SELECT
  safe_CAST(date1 AS DATE) AS date1,
  safe_CAST(date2 AS DATE) AS date2,
  FORMAT_DATE('%b %d,%Y', safe_CAST(date2 AS DATE)) AS formatted_date2
FROM
  (
    SELECT
      '2/1/20' AS date1,
      '2020-02-01' AS date2
  ) AS table_1

When casting STRING -> DATETIME, the string must be in the format YYYY:MM:DD HH:MM:SS

str_to_datetime
2020-12-25T03:22:01

When casting STRING -> TIMESTAMP the string must be in a format YYYY:MM:DD HH:MM:SS [timestamp] (where the timestamp defaults to UTC if not specified)

str_to_timestamp
2020-12-25T08:22:01.000Z

When casting STRING->TIME the string must be in the format HH:MM:SS

str_to_time
15:03:11

Converting to BOOLs

SELECT
  CAST('2020-12-25 03:22:01' AS DATETIME) AS str_to_datetime

When converting to BOOLs (Booleans, True/False) from other types there are a few rules to keep in mind:

SELECT
  CAST('2020-12-25 03:22:01-5:00' AS TIMESTAMP) AS str_to_timestamp

INT64 -> BOOL: Returns FALSE for 0, TRUE otherwise.

zero_to_boolfive_to_bool
falsetrue

STRING -> BOOL: Returns TRUE for 'true', FALSE for 'false', NULL otherwise.

true_to_boolfalse_to_boolapples_to_bool
truefalsenull

Common Questions

How to convert a STRING to a DATE?

select cast('15:03:11' as TIME) as str_to_time

Let's say you have a stringifed date that's not formatted in the standard YYYY-MM-DD, how do you cast it to be a date?

There are 2 options:

SELECT
  CAST(0 AS BOOL) AS zero_to_bool,
  CAST(5 AS BOOL) AS five_to_bool

Use PARSE_DATE where you can specify the exact syntax of your string:

SELECT
  SAFE_CAST('true' AS BOOL) AS true_to_bool,
  SAFE_CAST('false' AS BOOL) AS false_to_bool,
  SAFE_CAST('apples' AS BOOL) AS apples_to_bool
f0_
2020-01-03

Use STRING manipulation to reconstruct your string and CAST to the right format:

SELECT
  PARSE_DATE('%m/%d/%Y', '1/3/2020')
date_from_str
2020-12-03

How to convert EPOCH to TIMESTAMP?

SELECT
  CAST(CONCAT(REGEXP_EXTRACT(str_date, r'\/([0-9]{4})'), "-", REGEXP_EXTRACT(str_date, r'([0-9]{1,2})\/'), "-", REGEXP_EXTRACT(str_date, r'\/([0-9]{1,2})\/')) AS DATE) AS date_from_str
FROM
  (
    SELECT
      '12/3/2020' AS str_date
  ) AS table_1

Epochs, or Unix time are the seconds since 1970-01-01 00:00:00 UTC. To make them usable for analysis, you'll need to convert them to a DATETIME or TIMESTAMP.

To do this, you can again make use of PARSE_DATETIME, or PARSE_TIMESTAMP if your epoch is a STRING.

parse_timestamp_s_1611592773
2021-01-25T16:39:33.000Z

Or if your Epoch is an INT64, use the following functions: TIMESTAMP_SECONDS, TIMESTAMP_MILLIS, TIMESTAMP_MICROS, UNIX_SECONDS, UNIX_MILLIS, UNIX_MICROS.

SELECT parse_timestamp('%s', '1611592773')
formatted_timestamp
2021-01-25T16:39:33.000Z

How to convert scientific notation to decimal format?

SELECT
  TIMESTAMP_SECONDS(1611592773) AS formatted_timestamp

CAST to NUMERIC to turn a Scientific Notation column to a decimal:

SELECT sci, cast(sci as NUMERIC) sci_numeric FROM (
   SELECT
      (15000000.0 + 17000000.01) AS sci)
scisci_numeric
32000000.0132000000.010000002

Troubleshooting Common Errors

Could not cast literal to type DATE

Check the format of your string when converting to a DATE. Remember it must be in YYYY-MM-DD . But also try PARSE_DATE if you're looking for something to read a specific format.

Related Pages

  • Dates and Times in Standard SQL

Got a CSV?
See it differently in <2 mins

Get started for FREEWatch our CEO do it