2010-07-11 3 views
1

Я пишу свои запросы в стандартном SQL/стандартном SQL, чтобы он работал в любой базе данных (MySQL, Postgre и т. Д.).Как написать MySQL DATE_ADD() в «generic» SQL

Я хотел бы использовать DATE_ADD() MySQL. В Postgre это будет сделано с чем-то вроде '2001-01-01'::timestamp + '1 year'::interval;.

Есть ли более общий способ записи, чтобы он работал как на MySQL, так и на Postgre (или на других)?

+4

Попытка написать стандартный SQL, как правило, ошибка. Взгляните на доступные базы данных, посмотрите, какие функции вам нужны, а затем будьте смелыми и просто выберите базу данных, которая соответствует вашим потребностям и коду. Используйте функции, которые эффективно работают с базой данных. «Общий SQL» обычно означает медленный, незаменимый SQL, который работает только с двумя базами данных, которые вы тестировали. –

+1

Чтобы добавить комментарий к Mark, если вам нужно поддерживать разных поставщиков баз данных - либо взгляните на ORM (простота для упрощения торговли для производительности), либо используйте SQL, настроенный для каждого поставщика базы данных (лучшая производительность, больше работы). –

ответ

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';

Смежные вопросы