Выражение в поле даты

#sql #date #indexing #expression

#sql #Дата #индексирование #выражение

Вопрос:

Я пытаюсь реорганизовать некоторые запросы для использования индекса.

Запрос выглядит следующим образом:

 SELECT dateField,valueField
  FROM myTable
 WHERE current_date - dateField <= 30
  

Чтобы иметь возможность эффективно использовать индекс, я бы хотел избавиться от выражения в поле даты.

К чему я смог его преобразовать

 SELECT dateField,valueField
  FROM myTable
 WHERE dateField >= current_date - 30
  

Но я не уверен, правильно ли это, учитывая, что «30» является параметром и иногда меняется.

Комментарии:

1. Это должно работать как с параметром, так и с константой.

2. Но действительно ли эти два запроса эквивалентны?

3. если dateField имеет DATE тип даты, да, эти два запроса эквивалентны. В противном случае округление может сделать их немного разными.