SQLFormatter
FormatterConvertPricingDocsGet Pro
SQL Converter · MySQLBigQuery

Convert MySQL SQL to BigQuery

MySQL to BigQuery swaps `backtick` identifiers for `proj.dataset.table` refs, GROUP_CONCAT for STRING_AGG and NOW() for CURRENT_TIMESTAMP(). A mechanical formatter only re-indents — it won’t rewrite dialect-specific syntax. The AI converter in the app translates the query and the table below shows exactly what changes.

MySQL — source
MySQL
SELECT o.status,
       COUNT(*) AS n,
       GROUP_CONCAT(o.id) AS ids
FROM orders o
WHERE o.created_at > NOW() - INTERVAL 1 DAY
GROUP BY o.status;
BigQuery — converted
BigQuery
SELECT o.status,
       COUNT(*) AS n,
       STRING_AGG(CAST(o.id AS STRING)) AS ids
FROM proj.dataset.orders o
WHERE o.created_at > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
GROUP BY o.status;
Convert your own query

What changes from MySQL to BigQuery

MySQLBigQueryWhy
`orders``proj.dataset.orders`Backtick identifiers become fully-qualified table references.
GROUP_CONCAT(x)STRING_AGG(CAST(x AS STRING))BigQuery uses STRING_AGG and needs a STRING argument.
NOW() - INTERVAL 1 DAYTIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)Timestamp math differs.

Other SQL conversions

MySQLPostgreSQLMySQLT-SQLMySQLSnowflakePostgreSQLBigQueryMySQLSQLiteSnowflakeBigQueryAll conversions →