mysql DATE_ADD INTERVAL как значение

можно ли использовать аргументы в DATE_ADD как значения из какого-то поля в таблице.

SELECT DATE_ADD(some_date, INTERVAL some_number WEEK) as new_date FROM table1

Можно ли заменить «WEEK» на какое-то значение из моей таблицы. Допустим, у меня есть столбец со значениями ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ и т. д.?


person mesnicka    schedule 30.09.2013    source источник


Ответы (1)


Нет. Вы можете иметь динамическое значение только для выражения, но не для единиц ключевых слов на интервалах. Ключевые слова единиц могут быть SECOND, DAY_MICROSECOND и т. д.
Объединение имен этих единиц приведет к строковому выражению и не может быть оценено как значение интервала. Следовательно, вы не можете использовать заполнители (подготовленный оператор) для достижения этой цели.

В качестве альтернативы вы можете сгенерировать запрос, объединив частичные строки на вашем языке программирования.

String part1 = "SELECT DATE_ADD(some_date, INTERVAL some_number ";  
String part2 = "WEEK"; // say as default value  

if( my_condition_1_is_satisfied ) then part2 = "DAY"
else if( my_condition_2_is_satisfied ) then part2 = "MONTH"
else ...

// then concatenate part1 and part 2
String sql = part1 + part2;
// now your query string is ready to use  

См.: DATE_ADD(дата,единица выражения INTERVAL)

person Ravinder Reddy    schedule 30.09.2013