2015-01-14 3 views
0

Поддерживая как MySQL, так и SQL Server Мне нужно вычесть несколько дней с даты. Можно ли это сделать с помощью ANSI SQL или мне нужно поддерживать две версии этого?ANSI SQL для вычитания дня

Например. Я это для MySQL:

SELECT 
    CURRENT_DATE - INTERVAL '30' DAY 
FROM dual; 
+2

Насколько я знаю, SQL Server не поддерживает интервалы ANSI, но почему бы вам просто не попробовать себя? Написание этого вопроса, вероятно, заняло больше времени, чем просто запуск этого оператора в SQL Server. –

+0

http://stackoverflow.com/questions/449182/sql-ansi-to-manage-datetime-values ​​ –

+0

@a_horse_with_no_name - Я сам пробовал это, прежде чем писать вопрос! Пример кода - вот что это такое - пример того, что я пытаюсь выполнить. – homaxto

ответ

2

Там нет общедоступной версии для 2003 спецификации ANSI SQL, но ни один поставщик не в полной мере поддерживать его, чтобы начать с. Каким-то образом, есть достаточные различия в синтаксисе между этими двумя, чтобы писать разные коды для каждого.

MySQL имеет DATE_ADD функцию:

SELECT DATE_ADD(CURRENT_DATE, INTERVAL 30 DAY) 
FROM dual; 

SQL Server имеет DATEADD функцию (без подчеркивания):

SELECT DATEADD(DAY, 30, CAST(GETDATE() AS date)) 

GETDATE() возвращение как дата & время. Литой вырезает временную часть.

+0

Спасибо, за то, что подтвердили это, и за два примера того, как это сделать в обеих системах. – homaxto

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