Операции с датами

Автор serkondr, 21 декабря 2011, 10:00

0 Пользователи и 1 гость просматривают эту тему.

serkondr

Доброго времени суток!

Использовал конструкцию MONTH(CURRENT_DATE) - 1 и MONTH(CURRENT_DATE) -2  для получения номеров месяцев, предшествующих текущему. Попробовал изменить системную дату компа на январь, дабы проверить, что получится. И с досадой обнаружил, что получил 0 вместо 12 и -1 вместо 11.
Искал в инете и на форуме что-либо подобное, но ничего подходящего не нашлось. Всё, что нашёл, не работает.
Подскажите пожалуйста, как сделать, чтоб получить номера двух предшествующих месяцев из текущей даты в январе и феврале?

p.s.
Пробовал набрать в столбце запроса такое: DATEADD('MONTH', -2, CURRENT_DATE) , вроде на синтаксис не ругается, но при исполнении запроса выдаёт ошибку :

Состояние SQL: S1000
Код ошибки: -33

Access is denied: DATAADD in statement [SELECT DATAADD( 'MONTH', - 2, CURRENT_DATE ) FROM "Data_p"]

Подскажите, пожалуйста, что тут не так?
Спасибо.

neft

#1
Функция DATEADD не поддерживается во встроенной в Base СУБД HSQLDB 1.8.

Built-in functions and Stored Procedures
http://wiki.services.openoffice.org/wiki/Built-in_functions_and_Stored_Procedures

serkondr

Спасибо!
Использовал CASE.

Не подскажете, где можно найти русскоязычный учебник- перечень доступных в HSQLDB 1.8. команд с синтаксисом и примерами?

neft

#3
Цитата: serkondr от 21 декабря 2011, 22:24
Не подскажете, где можно найти русскоязычный учебник- перечень доступных в HSQLDB 1.8. команд с синтаксисом и примерами?
Подойдет любая книга по SQL на русском языке - есть много понятных, подробных и с примерами.
Только придется всё перепроверять на Base (HSQLDB), но так бывает и на других СУБД - что-то поддерживается, что-то нет, а что-то работает как-то не так.
Тут основное - документация от разработчика, но она, увы, на английском.

И, конечно, русскоязычный форум по SQL: SQL.ru

Конкретно по HSQLDB там вряд ли ответят, но составить сложный запрос на SQL помогут.
Ну, а адаптировать его под Base - ваша задача.