2013-07-01 40 views
0

我想將postgresql sql查詢轉換爲mysql。使用翻譯器。在mysql中使用gmt-timezone timestamp創建數據字段?

這是Postgres的查詢:

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

它轉化爲

comment_date_gmt timestamp DEFAULT timezone('gmt', 

的無閉括號是一個跡象,一切都是不正確的。我試圖找出這個查詢應該是什麼樣子。有什麼建議麼?

+1

你在用什麼翻譯器?聽起來像他們的論壇的問題.. – twoleggedhorse

+0

我環顧了一下,看來你不能真正期望100%的工作postgres到MySQL轉換器。 – Himmators

+0

@KristofferNolgen:是的,Postgres中有很多MySQL缺乏的功能......特別是,使用表達式作爲默認值,就像您在Postgres中做的那樣。 –

回答

1

唯一可靠的SQL查詢方言轉換器是人類的大腦。

工具對於基礎知識很有用,比如數據類型重命名,但只要使用標準類型編寫查詢,就可以避免大量此類事情。

你有一個非常艱難的時間轉換使用查詢變量到PostgreSQL的查詢MySQL查詢,或將一個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和其他兼容的數據庫理解的標準措辭。

相關問題