Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с датами в Derby при помощи SQL, Работа с датами в Derby при помощи SQL 
:(
    Опции темы
carper
  Дата 28.10.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 1
Всего: 8



Cоздаю таблицу, хочу указать для колонки что-то типа 
default CURRENT_DATE+10 - Не работает, ругается на то, что не может добавить INTEGER к DATE.

Хорошо, решил посмотреть как это будет работать хотя бы через SQL

select CURRENT_DATE - 10 from my_psevdo_table_dual  ...  Аналогичная ошибка.

(встроенная функция CASE не приводит числа ни к DATE ни к TIMESTAMP)

Вопрос: Есть ли в Derby хоть какие-то функции, позволяющие складывать и вычитать целые числа из даты?
Например, как мне выбрать  select count(*) from my_table where <=(CURRENT_DATE - 10)?


PM MAIL   Вверх
AntonSaburov
Дата 29.10.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



DATE

The DATE function returns a date from a value.

The argument must be a date, timestamp, a positive number less than or equal to 2,932,897, a valid string representation of a date or timestamp, or a string of length 7 that is not a CLOB, LONG VARCHAR, or XML value. If the argument is a string of length 7, it must represent a valid date in the form yyyynnn, where yyyy are digits denoting a year, and nnn are digits between 001 and 366, denoting a day of that year. The result of the function is a date. If the argument can be null, the result can be null; if the argument is null, the result is the null value.
The other rules depend on the data type of the argument specified:

    * If the argument is a date, timestamp, or valid string representation of a date or timestamp: The result is the date part of the value.
    * If the argument is a number: The result is the date that is n-1 days after January 1, 0001, where n is the integral part of the number.
    * If the argument is a string with a length of 7: The result is the date represented by the string.

Syntax

DATE ( expression )

This example results in an internal representation of '1988-12-25'.

VALUES DATE('1988-12-25')

Смотри вот тут все функции - http://db.apache.org/derby/docs/10.2/ref/rrefsqlj29026.html
PM MAIL WWW ICQ   Вверх
carper
Дата 29.10.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 2.3.2005

Репутация: 1
Всего: 8



Я это читал (это есть и в offline help), но не понимаю, как все же написать:

select * from my_tables where MY_FILED_DATE_TYPE <= (CURRENT_DATE - 10) ?

VALUES DATE(CURRENT_DATE) - здесь не применимо (оно вообще в SQL запросах не работает, ни так ни в виде функции)


"If the argument is a number: The result is the date that is n-1 days after January 1, 0001, where n is the integral part of the number." 
Ну да, осталось только понять как узнать чему равен CURRENT_DATE в "граммах", вычесть из него дни и опять использовать DATE smile

Именно это я и пытаюсь понять - как из CURRENT_DATE вытащить  число дней (желательно бы было еще знать как из TimeStamp вытащить число миллисекунд)?

DATE позволяет использовать целочисленный аргумент и по нему возвращает дату.
Мне нужна обратная функция - с аргументом типа  дата, возвращающая целое число! (Раз уж Derby не имеет простейших переопределений операторов сложения и вычитания для дат). 

Все, что я нашел, так это CAST, который не работает желаемым способом для дат!

P.S. Я знаю, что в Derby можно использовать собственные функции, но писать их для данного случая ... :(

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.