При запросе столбца со значением только даты, без какого-либо времени дня или часового пояса, то есть столбца типа, аналогичного типу SQL -стандарт DATE
, тогда используйте Java класс LocalDate
.
Как правило, лучше всего использовать полуоткрытое определение промежутка времени, где начало включено, а окончание - исключено. Это позволяет пролетам почти примыкать друг к другу без зазоров и перекрытий. Поэтому никогда не используйте команду SQL BETWEEN
для диапазонов даты и времени, поскольку она полностью закрыта (начало и конец включены).
Получите сегодняшнюю дату, как показано на настенных часах, используемых людьми определенного региона (часовой пояс).
BST
не является часовым поясом реального времени. Для Briti sh time используйте Europe/London
.
ZoneId z = ZoneId.of( "Europe/London" ) ;
LocalDate today = LocalDate.now( z ) ;
SQL будет выглядеть примерно так:
SELECT *
FROM event_
WHERE ? >= start_
AND ? < end_
;
Заполните заполнители.
myPreparedStatement.setObject( 1 , today ) ;
myPreparedStatement.setObject( 2 , today ) ;
Загрузить значения даты из базы данных в Java.
LocalDate start = myResultSet.getObject( … , LocalDate.class ) ;
TIMESTAMP WITHOUT TIME ZONE
Неправильно названный DATE
в база данных Oracle фактически представляет дату с указанием времени даты без контекста часового пояса или смещения от UT C. Таким образом, этот тип не может представлять момент, конкретную c точку на временной шкале. Если значение - полдень 23 января следующего года, мы не можем знать, полдень ли это в Токио, Тулузе или Толедо - все это разные моменты с разницей в несколько часов. Этот тип DATE
сродни стандартному типу SQL TIMESTAMP WITHOUT TIME ZONE
.
Таким образом, для этого типа данных ваш вопрос о часовых поясах не имеет смысла. Яблоко и апельсины. Вовлечение часовых поясов означает, что вы отслеживаете моменты, указав c точек на временной шкале. Но Oracle DATE
не может представлять моменты, как обсуждалось выше.
Чтобы отслеживать моменты, вы должны использовать столбец типа, подобного SQL -стандарту TIMESTAMP WITH TIME ZONE
.