Я пытаюсь построить запрос SQL, который должен быть выполнен как
как на сервере HSQL (v2.2.4), так и на сервере MySQL (v5.1.36) (если он может работать и на DB2 v9, это было бы замечательным бонусом!)
Запрос:
select count(*) from document where current_date - cast(indexing_date as date) <= ?
(здесь current_date
- стандартная функция HSQL / MySQL, а indexing_date
- столбец с типом datetime
, параметр ?
заменяется целым числом 20
, которое является числом дней).
Проблема в том, что MySQL возвращает разницу между датами как между числами , тогда как HSQL возвращает разницу в днях (что логично, когда вы вычитаете дату из даты).
Также HSQL поддерживает этот синтаксис (но MySQL нет):
select count(*) from document where cast(indexing_date as date) between current_date - 20 day and current_date
пока MySQL нет. Мне известно о DATEDIFF()
в MySQL, но, как я уже сказал, решение должно быть совместимым.