Developer Reference
Side-by-side comparisons for understanding how things differ — SQL dialects, standard-library functions across languages, and MySQL/MariaDB versions. Looking for an instant converter instead, like cron or date-format translation? Browse Tools. Planning a MySQL → PostgreSQL migration? Analyze your schema instead of looking up individual functions one at a time.
- SQL CrosswalkMap SQL functions and query behavior between MySQL, PostgreSQL, and SQL Server.
- Function EquivalentsFind the closest — and the idiomatic — equivalent for common standard-library functions across languages.
- MySQL/MariaDB VersionsA sourced comparison table and deep-dive guides for what actually changes between MySQL 5.7/8.0/8.4 and MariaDB 10.11/11.4.
SQL Function & Dialect Crosswalk
The same query intent, spelled differently across MySQL, PostgreSQL, and SQL Server — with the caveats that a simple keyword swap would miss.
IFNULL() PostgreSQL PostgreSQL's COALESCE() covers everything MySQL's IFNULL() does for the common 2-argument case, and goes further by accepting any number of fallback expressions.
GROUP_CONCAT() PostgreSQL PostgreSQL's STRING_AGG() does the same job as MySQL's GROUP_CONCAT(), but makes the separator mandatory and moves ORDER BY to a different position in the call.
DATE_FORMAT() PostgreSQL DATE_FORMAT() and TO_CHAR() both work for grouping and display in PostgreSQL, but neither lets a plain index satisfy a query that filters or groups by the formatted string — the query-shape implications matter more than the syntax swap.
DATEDIFF() PostgreSQL PostgreSQL has no DATEDIFF() function — subtracting two date values directly returns the same whole-day integer that MySQL's DATEDIFF() does.
AUTO_INCREMENT PostgreSQL PostgreSQL's SQL-standard GENERATED ALWAYS AS IDENTITY columns replace MySQL's AUTO_INCREMENT, but back the counter with a distinct sequence object and reject explicit-value inserts by default.
LIMIT ... OFFSET ... SQL Server SQL Server 2012+'s OFFSET/FETCH clause covers what MySQL's LIMIT does, but requires an explicit ORDER BY, and older SQL Server versions need a completely different ROW_NUMBER()-based rewrite.