Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Сравнение дат  [new]
mastanik
Member

Откуда:
Сообщений: 365
ЗДравствуйте,

стоит Оракл8. пытаюсь выбрать все даты, находящиеся в промежутке

select test_date from test_stat_sessions where test_date >= to_date('20-09-2006', 'DD-MM-YY') and test_date <= to_date('23-09-2006', 'DD-MM-YY');

значения выбираются с 20-го числа по 22-ое, но не выводится 23-е. В чем проблема?

Спасибо
25 сен 06, 10:14    [3178060]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Владимор Конев
Member

Откуда:
Сообщений: 3451
Проблема в том, что дата - это не только число, месяц, год, но ещё и время.
Видимо у тебя дата за 23 число с порцией времени, вот оно и не выбирается...
25 сен 06, 10:16    [3178070]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Владимор Конев
Member

Откуда:
Сообщений: 3451
Вот так попробуй:
select test_date 
  from test_stat_sessions 
 where test_date >= to_date('20-09-2006', 'DD-MM-YY') 
   and test_date <= to_date('23-09-2006 23:59:59', 'DD-MM-YY hh24:mi:ss');
25 сен 06, 10:18    [3178076]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Elic
Member

Откуда:
Сообщений: 29990
RTFM DATE Datatype, Membership Conditions (FAQ)
25 сен 06, 10:18    [3178078]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Senatorsa
Member

Откуда:
Сообщений: 8
mastanik
ЗДравствуйте,

стоит Оракл8. пытаюсь выбрать все даты, находящиеся в промежутке

select test_date from test_stat_sessions where test_date >= to_date('20-09-2006', 'DD-MM-YY') and test_date <= to_date('23-09-2006', 'DD-MM-YY');

значения выбираются с 20-го числа по 22-ое, но не выводится 23-е. В чем проблема?

Спасибо


исрользуй between
25 сен 06, 10:22    [3178101]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Dmitry A. Los
Member

Откуда: Kiev
Сообщений: 31
select test_date
from test_stat_sessions
where TRUNC (test_date, 'DD') BETWEEN to_date('20-09-2006', 'DD-MM-YY') and to_date('23-09-2006', 'DD-MM-YY');
25 сен 06, 10:26    [3178115]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Владимор Конев
Member

Откуда:
Сообщений: 3451
Dmitry A. Los
select test_date
from test_stat_sessions
where TRUNC (test_date, 'DD') BETWEEN to_date('20-09-2006', 'DD-MM-YY') and to_date('23-09-2006', 'DD-MM-YY');

И прощай индексный доступ, если по полю test_date индекс имеется...
(Про FBI умолчу, автору вопроса оно ещё рано знать о таких вещах)
25 сен 06, 10:31    [3178138]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116252
Еще один распространенный прием в таких случаях - "залезть в завтра" :-)

select test_date from test_stat_sessions where test_date >= to_date('20-09-2006', 'DD-MM-YYYY') 
and test_date < to_date('24-09-2006', 'DD-MM-YYYY');
25 сен 06, 10:53    [3178258]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
dmidek
Еще один распространенный прием в таких случаях - "залезть в завтра" :-)

select test_date from test_stat_sessions where test_date >= to_date('20-09-2006', 'DD-MM-YYYY') 
and test_date < to_date('24-09-2006', 'DD-MM-YYYY');

рояля, конечно, не играет, но я бы писал вот так
< 1+to_date('23..
25 сен 06, 12:20    [3178884]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
mastanik
Member

Откуда:
Сообщений: 365
А если "залезать в завтраЭ, и это завтра окажется 32-числом месяца?
25 сен 06, 14:59    [3180092]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116252
mastanik
А если "залезать в завтраЭ, и это завтра окажется 32-числом месяца?

Это в чем вопрос ? Что программист напишет тридцать второе августа ?
Тогда ему пора в отпуск :-)
А to_date + 1 вообще все сделает само...
25 сен 06, 15:01    [3180123]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
mastanik
А если "залезать в завтраЭ, и это завтра окажется 32-числом месяца?

Продемонстрируйте плиз этот "баг" :-)
25 сен 06, 15:01    [3180124]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Elic
Member

Откуда:
Сообщений: 29990
mastanik
А если "залезать в завтраЭ, и это завтра окажется 32-числом месяца?
Обычно "в завтра залазят" так, как orawish, а не как dmidek.
25 сен 06, 15:03    [3180134]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116252
Elic
mastanik
А если "залезать в завтраЭ, и это завтра окажется 32-числом месяца?
Обычно "в завтра залазят" так, как orawish, а не как dmidek.

ОК. Я не спорю. Но все же , предположим программист не силен в датах
и записал "лунный день" :-).

with tab1 as
(select to_date('31-06-2006', 'DD-MM-YYYY') from dual)
select * from tab1 

Получит ORA-01839 , вспомнит известное кино и исправит граничную дату
на первое июля
25 сен 06, 15:10    [3180177]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Elic
Member

Откуда:
Сообщений: 29990
dmidek
предположим программист не силен в датах и записал "лунный день" :-).
with tab1 as
(select to_date('31-06-2006', 'DD-MM-YYYY') from dual)
select * from tab1 
Получит ORA-01839 , вспомнит известное кино и исправит граничную дату
на первое июля
Такому недопрограммисту нужно отрезать руки по уши. Он эту дрянь "оттестирует" в середине месяца, а потом в отпуск свалит.

P.S. Я пока тебя ещё не критиковал. Но если будешь пытаться оправдаться, то ...
25 сен 06, 15:17    [3180223]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116252
Elic
dmidek
предположим программист не силен в датах и записал "лунный день" :-).
with tab1 as
(select to_date('31-06-2006', 'DD-MM-YYYY') from dual)
select * from tab1 
Получит ORA-01839 , вспомнит известное кино и исправит граничную дату
на первое июля
Такому недопрограммисту нужно отрезать руки по уши. Он эту дрянь "оттестирует" в середине месяца, а потом в отпуск свалит.

Размышляю, но пока не понимаю, как неверное указание граничной даты в
данном случае связано с временем тестирования. Хоть в начале, хоть
в конце месяца, а долбанет сразу.

Осенило, ты динамический SQL имеешь в виду ? :-)

Elic

P.S. Я пока тебя ещё не критиковал. Но если будешь пытаться оправдаться, то ...

(c) "Эх, жизнь моя жестянка ... " :-)
25 сен 06, 15:27    [3180280]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Elic
Member

Откуда:
Сообщений: 29990
dmidek
Размышляю, но пока не понимаю, как неверное указание граничной даты в
данном случае связано с временем тестирования. Хоть в начале, хоть
в конце месяца, а долбанет сразу.

Осенило, ты динамический SQL имеешь в виду ?
Скажем так, генерируемый.
Я тоже размышлял, и получилось, что сосчитать случаи, когда можно "зашить" литерал в код, у меня хватит пальцев, а на остальные случаи не хватит и песчинок Сахары :) Может у меня пальцев мало? :)
25 сен 06, 15:38    [3180344]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116252
Elic
dmidek
Размышляю, но пока не понимаю, как неверное указание граничной даты в
данном случае связано с временем тестирования. Хоть в начале, хоть
в конце месяца, а долбанет сразу.

Осенило, ты динамический SQL имеешь в виду ?
Скажем так, генерируемый.
Я тоже размышлял, и получилось, что сосчитать случаи, когда можно "зашить" литерал в код, у меня хватит пальцев, а на остальные случаи не хватит и песчинок Сахары :)

Да, Elic, это совершенно верно.
25 сен 06, 15:42    [3180387]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
contr
Member

Откуда:
Сообщений: 1909
Elic
Я тоже размышлял, и получилось, что сосчитать случаи, когда можно "зашить" литерал в код, у меня хватит пальцев

Ощущаю себя полным убожеством - не придумал ни одного случая, когда можно зашить литеральную дату в код...
Вернее только один, и тот достаточно экзотический, unix time называется...
25 сен 06, 15:45    [3180405]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
HX
Member

Откуда: Moscow
Сообщений: 2454
contr
Elic
Я тоже размышлял, и получилось, что сосчитать случаи, когда можно "зашить" литерал в код, у меня хватит пальцев

Ощущаю себя полным убожеством - не придумал ни одного случая, когда можно зашить литеральную дату в код...
Вернее только один, и тот достаточно экзотический, unix time называется...

Может для случая избегания null значений, например, служебную дату, какую-нибудь 01.01.2900. :-)..
25 сен 06, 15:50    [3180449]     Ответить | Цитировать Сообщить модератору
 Re: Сравнение дат  [new]
Elic
Member

Откуда:
Сообщений: 29990
contr
Elic
Я тоже размышлял, и получилось, что сосчитать случаи, когда можно "зашить" литерал в код, у меня хватит пальцев
Ощущаю себя полным убожеством - не придумал ни одного случая, когда можно зашить литеральную дату в код...
На этот случай у меня тоже хватит десять полностью разогнутых пальцев :)
contr
Вернее только один, и тот достаточно экзотический, unix time называется...
...
  • по молодости: c_any_monday constant date := ...
  • даты изменений алгоритмов системы (для ветвления)
  • to_date(null) :)
  • ...
  • 25 сен 06, 15:55    [3180476]     Ответить | Цитировать Сообщить модератору
     Re: Сравнение дат  [new]
    contr
    Member

    Откуда:
    Сообщений: 1909
    Elic
    contr
    Вернее только один, и тот достаточно экзотический, unix time называется...
    ...
  • по молодости: c_any_monday constant date := ...
  • даты изменений алгоритмов системы (для ветвления)
  • to_date(null) :)
  • ...

  • Ну литерал а-ля orawish - это тоже можно свалить на ошибки молодости, так что ИМХО не вариант.
    Даты изменения алгоритмов... Не могу себе представить область применения. Дело в том, что:
    1) алгоритмы обрабатывают данные. Почему новый алгоритм не может обрабатывать данные прошлых лет?
    2) Если речь о плановом переключении на новый функционал - тем более нельзя забивать литералом, даты могут сдвигаться...
    3) to_date(null) я бы к рассматриваемым литералам вообще не относил. Null он и есть null.

    Так что у меня по-прежнему остался только unix time :)

    2M_IV: не-а, такие вещи у нас системными вызовами реализуются, писать в коде - ни-ни...
    25 сен 06, 16:15    [3180619]     Ответить | Цитировать Сообщить модератору
     Re: Сравнение дат  [new]
    HX
    Member

    Откуда: Moscow
    Сообщений: 2454
    contr

    2M_IV

    Я что-то пропустил?.. .. Вроде бы этот персонаж здесь не участвовал.
    25 сен 06, 16:20    [3180657]     Ответить | Цитировать Сообщить модератору
     Re: Сравнение дат  [new]
    HX
    Member

    Откуда: Moscow
    Сообщений: 2454
    Elic
  • to_date(null) :)

  • А почему вы это относите к константам?..
    25 сен 06, 16:21    [3180664]     Ответить | Цитировать Сообщить модератору
     Re: Сравнение дат  [new]
    M_IV
    Member

    Откуда:
    Сообщений: 1303
    HX
    contr

    2M_IV

    Я что-то пропустил?.. .. Вроде бы этот персонаж здесь не участвовал.
    поаккуратнее pls ...
    25 сен 06, 16:24    [3180681]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
    Все форумы / Oracle Ответить