2010-07-11 25 views
1

我正在'標準'/'通用'SQL中編寫我的查詢,以便它可以在任何數據庫(MySQL,Postgre等)上運行。如何在「通用」SQL中編寫MySQL DATE_ADD()SQL

我想使用MySQL的DATE_ADD()。在Postgre中,它可以用'2001-01-01'::timestamp + '1 year'::interval;之類的東西來完成。

是否有更多'一般'的方式來編寫它,以便在MySQL和Postgre(或其他)上運行?

+4

想寫標準SQL通常是一個錯誤。看看可用的數據庫,看看你需要哪些功能,然後勇敢地選擇一個滿足你的需求和代碼的數據庫。使用數據庫有效的功能。 「通用SQL」通常意味着緩慢且不可維護的SQL,它只適用於您測試過的兩個數據庫。 – 2010-07-11 17:22:47

+1

要添加到Mark的評論中,如果您需要支持不同的數據庫供應商 - 請查看ORM(交易編碼簡化性能)或使用爲每個數據庫供應商定製的SQL(更好的性能,更多的工作)。 – 2010-07-11 17:35:02

回答

2

不,沒有用於添加日期的SQL標準函數。根據你創建應用程序的方式(使用數據庫抽象層和/或接口層),你可能可以用通用的方式處理它,並且仍然讓數據庫執行數學運算,而不是你的代碼。

1

在MySQL中你不需要DATE_ADD,它具有幾乎相同的語法PostgreSQL的:

的MySQL:SELECT CAST('2001-01-01' AS date) + INTERVAL 1 year;

的PostgreSQL:SELECT CAST('2001-01-01' AS date) + INTERVAL '1 year';