оракул, как можно проверить, если «время» не дата между двумя полями даты со временем - PullRequest
0 голосов
/ 29 декабря 2018

Q1 - у меня есть эта задача, где я хочу проверить, нет ли наложения «времени» между двумя полями дат (start_date, end_date) и их временем, время, которое я хочу проверить, совпадает с датой началаи дата окончания

любые идеи или советы

Q2 -

select 
    extract( hour from
        to_timestamp(
            to_char('04/04/2018 04:05:05','dd/mm/yyyy hh24:mi:ss')
        )
    ) as v_to 
from dual;

Возвращает:

ora-01722 неверный номер

Мой NLS_TIMESTAMP_FORMAT - «ДД-МЕС-ГГГГ ЧЧ24: MI: SS»

1 Ответ

0 голосов
/ 29 декабря 2018

Q1: вы можете сравнивать даты, используя обычные операторы сравнения, поэтому, чтобы проверить, принадлежит ли данная дата определенному интервалу, вам необходимо:

...my_date >= start_date AND my_date <= end_date

Или:

...my_date BETWEEN start_date AND end_date

Q2 - Это не работает из-за вызова TO_CHAR, который ожидает дату в качестве первого аргумента (не строки) и возвращает строку, которая не подходит для потребления TO_TIMESTAMP.

Вы должны пропустить TO_CHAR и начатьс TO_TIMESTAMP:

select
    extract( hour from
        to_timestamp('04/04/2018 04:05:05', 'dd/mm/yyyy hh24:mi:ss')
        )
    ) as v_to 
from dual;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...