我正在尝试将postgresql sql-query转换为mysql。使用翻译。
这是postgres中的查询:
comment_date_gmt timestamp without time zone DEFAULT timezone('gmt'::text, now()) NOT NULL,
它已转换为
comment_date_gmt timestamp DEFAULT timezone('gmt',
非闭合括号表示一切都不对。我想弄清楚这个查询应该是什么样子。有什么建议吗?
答案 0 :(得分: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和其他兼容数据库理解的标准措辞。