Диапазон дат в МН / SQL (Oracle)

Это не ужасно в и себя, но нужно действительно следить за вложением.

приемлемый вариант использования как таков:

я - компонент низкого выхода, который может встретиться со многими различными ошибками однако, мой потребитель только интересуется определенным типом исключения. Поэтому я могу сделать это:

catch(IOException ex)
{
    throw new PlatformException("some additional context", ex);
}

Теперь это позволяет потребителю делать:

try
{
    component.TryThing();
}
catch(PlatformException ex)
{
   // handle error
}

Да, я знаю, что некоторые люди скажут, но потребитель должен поймать IOException, но это зависит от того, насколько абстрактный код потребления на самом деле. Что, если Impl сохраняет на диск что-то и потребителя, не имеет никакой допустимой причины думать, что их операция коснется диска? В таком сценарии не имело бы никакого смысла помещать эту обработку исключений в код потребления.

то, Чего мы обычно стараемся избегать при помощи этого шаблона, помещает "всеобъемлющий" обработчик исключений в код бизнес-логики, потому что мы хотим узнать все возможные типы исключений, поскольку они могли бы привести к более фундаментальной проблеме, которая должна быть исследована. Если мы не ловим, это пузырится, поражает "лучший лучший" обработчик уровней, и должен останавливать приложение от движения дальше. Это означает, что клиент будет отчет, что исключение и Вы получите шанс изучить его. Это важно, когда Вы пытаетесь создать устойчивое программное обеспечение. Необходимо найти все эти ошибочные случаи и написать определенный код для обработки их.

то, Что не очень симпатично, является вложением они чрезмерная сумма, и это - проблема, которую необходимо решить с этим кодом.

, Поскольку другой плакат указал, что исключения для довольно исключительного поведения, но не берут это слишком далеко. В основном код должен выразить "нормальную" операцию, и исключения должны решить потенциальные проблемы, с которыми можно столкнуться.

С точки зрения исключений производительности прекрасны, Вы получите ужасные результаты, если Вы тест перфекта с отладчиком к встроенному устройству, но в выпуске без отладчика они на самом деле довольно быстры.

главное люди забывают, когда обсуждение выполнения исключений состоит в том, что в ошибочных случаях все замедляется так или иначе, потому что пользователь встретился с проблемой. Мы действительно заботимся о скорости, когда сеть снижается, и пользователь не может сохранить их работу? Я очень сомневаюсь относительно возвращения сообщения об ошибке пользователю некоторые, более быстрый мс будет иметь значение.

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

В точном примере, который Вы даете, я не уверен все же. Мне кажется, что никакая выгода действительно не получена от обертывания, что, кажется, универсальное tcl исключение в другом универсальном звучании tcl исключение. Если что-либо, что я предложил бы разыскать исходного создателя кода и изучить, существует ли какая-то конкретная логика позади его взглядов. Возможности состоят в том, хотя это Вы могли просто уничтожить выгоду.

7
задан massko 17 November 2016 в 13:25
поделиться

3 ответа

, если вам нужны данные за полный 25-й день, исключая все 26, вам нужно удалить первую секунду из 26:

where myDate >= Date '2009-08-25' and myDate < Date '2009-08-26'

или

where myDate between Date '2009-08-25' and Date '2009-08-26' - interval '1' second

Обновление - A небольшая точность: в Oracle тип данных DATE используется как для типов «Дата» со временем, так и без него. Если вы имеете дело с датами без времени, оно обычно сохраняется с отрезком времени 00:00, что означает полночь. Из-за этого первый между ( my_date между '2009-08-25' и '2009-08-26' ) потенциально выберет два полных дня.

Удалив первую секунду из 26 , убедитесь, что случайно не выберете строки из 26.

13
ответ дан 6 December 2019 в 19:40
поделиться

Чтобы получить все в период с 25 августа с 12:00:01 до 23:59:59 включительно, попробуйте следующее:

  Where myDate Between to_Date('yyyymmddhh24miss', '20090825000001') 
                  And  to_Date('yyyymmddhh24miss', '20090825235959') 

(Почему вы исключаете полночь 25-го? ? Эта первая секунда (00:00:00) также является частью 25-го ...)

Чтобы получить все до 25 августа, попробуйте следующее:

Where myDate < to_Date('yyyymmdd', '20090825')
2
ответ дан 6 December 2019 в 19:40
поделиться
SELECT   *
FROM   TABLE
 WHERE   myDate BETWEEN myDate  ('08/25/2009', 'MM/DD/YYYY')
                         AND  myDate  ('08/26/2009', 'MM/DD/YYYY')  
-2
ответ дан 6 December 2019 в 19:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: