2013-04-17 4 views
0

Нужно ли мне преобразовать TIMESTAMP в DATE, прежде чем делать сравнение? EX:Сравнение Datetime в Oracle

AND SORD.CREATED >= TO_DATE(FROM_TZ(CAST(TO_DATE('','DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP), 'Asia/Kuala_Lumpur') AT TIME ZONE 'UTC','DD-MON-YYYY HH24:MI:SS') 
AND SORD.CREATED < TO_DATE(FROM_TZ(CAST(TO_DATE('','DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP), 'Asia/Kuala_Lumpur') AT TIME ZONE 'UTC','DD-MON-YYYY HH24:MI:SS') 

Просто найдите мнение, так как я все еще новичок и узнаю о базах данных.

+3

какая БД вы используете? –

+0

@MarcoForberg TO_DATE() - функция oracle или db2, но похоже, что from_tz() - только оракул. Теперь помечено соответствующим образом. –

+0

@MarcoForberg Я использую SQL Developer с oracle db –

ответ

1

Трудно сказать, что именно вы используете в базе данных. Из функций в коде, который вы предоставили, я угадываю Oracle? Пожалуйста подтвердите.

В общем, я могу сказать вам следующее:

  • Вы не пропуская никаких значений. Первый параметр для TO_DATE пуст, и он будет содержать строку для преобразования в дату.

  • Вам необходимо знать, какие значения в вашей базе данных. Is SORD.CREATED a DATE или TIMESTAMP Тип данных? Сохраняет ли значение UTC? Если да, то да, вы должны преобразовать локальные времена в UTC перед запросом. Если возможно, вы должны сделать это вне самого запроса.

  • Если значения в базе данных имеют тип TIMESTAMP WITH TIME ZONE, то вы можете использовать DATE или TIMESTAMP с функцией AT TIME ZONE, как вы показали в своем вопросе.

  • Не наносить на/из строки без необходимости. Если исходные данные уже находятся в типе DATE или TIMESTAMP, нет необходимости преобразовывать его в строку. Как только дата является датой, вы должны сохранить ее. Введение форматирования строк иногда может приводить к ошибкам.

+0

Да. Im с использованием oracle db. Я знаю, что входы пустые. Я использовал эту часть кода для создания отчета за определенный период. Я знаю, что база данных использует UTC, но не уверен, что тип данных - это метка времени или дата и время. Есть ли способ подтвердить тип данных? Я хочу знать, можем ли мы сравнить временную метку и дату и время без ошибки/смещения. –

+0

Только вы узнаете, что вы храните. Если это не ваша БД, посмотрите на определение таблицы и проверьте некоторые из значений. Или поговорите с тем, кем принадлежит БД. –