2011-02-11 72 views
1

嗨全部
什麼是寫入與mysql,oracle和mssql數據庫兼容的SQL語句的最佳方法。
例如,當我嘗試執行此:
使用oracle和mysql的日期格式

INSERT INTO "table_name ("date") VALUES (to_date('2011-02-11 16:48:08','yyyy-mm-dd hh24:mi:ss')); 

它工作在Oracle中,但此查詢會給錯誤:當我嘗試在MYSQL數據庫來執行它TO_DATE是不存在的。
但這種follwoing SQL工作在MySQL和甲骨文不起作用:

INSERT INTO t_sys_log (date) VALUES ('2011-11-11'); 

所以,可以請你幫我解決MySQL和Oracle日期問題的兼容性,並告訴我,如果有一種方法,使標準的SQL語句作品在rracle,mssql和mysql中? 謝謝

+0

我不認爲SQL標準包含日期函數,所以這可能有點困難...... – FrustratedWithFormsDesigner 2011-02-11 15:36:59

回答

2

是,TO_DATE將無法使用這兩個數據庫,因爲它是一個SQL擴展,它僅由Oracle提供的。

它變得更具挑戰性的更深一些,你去。 Date與Timestamp並不完全一樣,所以你會發現自己陷入了你想在某些數據庫中使用時間戳和在其他數據庫中使用日期的地方。這是因爲有數據庫中的日期只包含日曆日期,而不包含任何關聯的小時,分​​鍾和秒。

MSSQL日期也受到平臺的時區規則,而其他數據庫不抱日期須以同樣的方式時區規則。最後,如果你真的希望它能夠正常工作,你需要編寫一個軟件層,將日期轉換爲底層數據庫所需的格式,放棄「一個SQL語句做所有日期」。

2

嘗試ANSI標準日期文字

INSERT INTO t_sys_log (date) VALUES ( date '2011-12-31');

+0

SQL Server是否支持這種語法?我知道甲骨文和MySQL,但我沒有在MS文檔中看到它。 – 2011-02-11 20:18:32

0

我遇到了同樣的問題。不幸的是我找不到一個好辦法。相反,我創建了一個可插入的「助手」類(這是Java中的),它與數據庫驅動程序一起設置。它有創建部分DBMS特定的SQL語句的方法。