Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
Sheff
Member

Откуда:
Сообщений: 152
Задача стоит такая:
В базе хранится значение например 2006-15-10 12:13:56.67 типа TIMESTAMP в столбце createdate например. Нужно сравнивать это значение со значением например 2006-16-10.
Оформить всё это дело нужно в виде VIEW.

То значение, с которым нужно сравнивать (в данном случае 2006-16-10) получается следующим образом:
берется значение столбца типа TIMESTAMP для примера 2006-16-10 10:15:43.54 (основное уточнение, что это значение есть следующий день относительно того, с которым мы сравниваем), временнная часть либо обрезается, либо устанавливается в 00:00:00.0 и потом сравнивается с интересующим нас createdate. В данном случае createdate должно оказаться меньше.

Как это сделать? Кто-нить подскажите..
1 фев 07, 17:42    [3727466]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
Sheff
основное уточнение, что это значение есть следующий день относительно того, с которым мы сравниваем

Как это сделать? Кто-нить подскажите..


А этого условия недостаточно, чтобы быть 100% уверенным в результате?
1 фев 07, 17:45    [3727485]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116328
Не очень понял смысла.
Посмотрите этот пример

SQL> select 1
  2    from dual
  3   where to_timestamp('2006-15-10 12:13:56.67', 'YYYY-DD-MM HH24:MI:SS.FF') >=
  4         trunc(to_timestamp('2006-14-10 22:22:22.22',
  5                            'YYYY-DD-MM HH24:MI:SS.FF'))
  6  /

         1
----------
         1

SQL> 

Это то, что надо ?
1 фев 07, 17:49    [3727510]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
create table t(tm timestamp);
insert into t values(sysdate);
insert into t values(sysdate+1);
insert into t values(sysdate-1);
insert into t values(sysdate+2);
select tm,sysdate,case when tm<trunc(sysdate)+1 then 1 else 0 end from t;

Query finished, retrieving results...
    TM           SYSDATE                         BM                   
---------- ------------------- -------------------------------------- 
01.02.2007-01.02.2007 17:48:07                                      1 
 17:45:49,-                                                           
000000                                                                
02.02.2007-01.02.2007 17:48:07                                      0 
 17:47:20,-                                                           
000000                                                                
31.01.2007-01.02.2007 17:48:07                                      1 
 17:47:20,-                                                           
000000                                                                
03.02.2007-01.02.2007 17:48:07                                      0 
 17:47:33,-                                                           
000000                                                                

4 row(s) retrieved
1 фев 07, 17:49    [3727511]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
Sheff
Member

Откуда:
Сообщений: 152
Кому удобнее на словах...
Таблица на основе которой эта вьюха должна создаваться содержит ордера, грубо говоря ордера бываю двух типов:открывающий и закрывающий. Сначала создается открывающий, потом через некоторое время закрывающий. Оба они содержат ссылку друг на друга, ClosedBy и OpenedBy. А во вьюхе нужно получить ордера, которые открылись в один день, а закрылись только на другой день и т.д. Или другими словами не закрылись в тот день когда открылись, до наступления 23:59:59.999
1 фев 07, 18:00    [3727591]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
Elic
Member

Откуда:
Сообщений: 29991
Sheff
Или другими словами не закрылись в тот день когда открылись, до наступления 23:59:59.999
trunc(ClosedAt) <> trunc(OpenedAt)
1 фев 07, 18:11    [3727671]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
Sheff
Member

Откуда:
Сообщений: 152
Я думал trunc не применима для timestamp!?
1 фев 07, 18:24    [3727762]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
Sheff
Я думал trunc не применима для timestamp!?


почему? а проверить?
1 фев 07, 18:25    [3727765]     Ответить | Цитировать Сообщить модератору
 Re: Работа с датами в Oracle. В частности округление, инкремент и возможно преобразование  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6919
Sheff
Я думал trunc не применима для timestamp!?

Oracle умеет делать неявные преобразования.
1 фев 07, 18:33    [3727805]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить