0

I'm trying to convert a postgresql sql-query to mysql. Using a translator.

this is the query in postgres:

comment_date_gmt timestamp without time zone DEFAULT timezone('gmt'::text, now()) NOT NULL,

it's converted to

comment_date_gmt timestamp DEFAULT timezone('gmt',

The none-closed parenthesis is a sign that everything isn't right. I'm trying to figure out what this query should look like. Any suggestions?

4

1 回答 1

1

唯一可靠的 SQL 查询方言转换器是人脑。

工具对于基础知识很有用,比如数据类型重命名,但很多这类事情可以通过首先使用标准类型编写查询来避免。

您将很难将使用查询变量的 MySQL 查询转换为 PostgreSQL 查询,或者将 PostgreSQL(嗯,SQL 标准)递归公用表表达式转换为 MySQL 可以理解的内容。两者有完全不同的存储过程语言、不同的内置函数和各种各样的东西。array_agg, unnest, 等等...大多数这些东西都需要翻译成使用 MySQL 变量的查询,而这完全可以做到。然后你有像row_number, lead,lag和聚合这样的窗口函数用作运行窗口,比如sum(blah) OVER (...). 通用转换器需要“理解”查询才能实际完成工作。

由于您尚未确定转换器工具,因此实际上不可能为指定问题提供特定答案。

猜测一下,如果您将 PostgreSQL 查询更改为:

comment_date_gmt timestamp without time zone DEFAULT (current_timestamp AT TIME ZONE 'utc') NOT NULL,

这是 PostgreSQL 和其他兼容数据库所理解的标准措辞。

于 2013-07-02T02:35:22.963 回答