2016-05-09 9 views
0

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

WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= (SELECT SYSTIMESTAMP FROM DUAL) 
AND DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= (SELECT SYSTIMESTAMP - INTERVAL '2' DAY FROM dual) 

, но это не совсем то, что я хочу, потому что это дает строку не начались в 12 часов утра, а от текущего времени.

Я ищу способ смешивать переменные даты (каждый день даты) и постоянное время (12 утра) вместе, так что мои запросы будут ограничены:

WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= (today's date started at 12 am) 
AND DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= (yesterday's date started at 12 am 
+0

Возможный дубликат [Oracle: как я могу выбирать записи ТОЛЬКО со вчерашнего дня?] (Http://stackoverflow.com/questions/1574565/oracle-how-can-i-select-records-only-from-yesterday) –

ответ

3

Вам не нужны подзапросы доступа функции. Я думаю, что вы просто хотите trunc():

WHERE DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP <= trunc(SYSTIMESTAMP) AND 
     DAILY_OPEN_POSITIONS.OPEN_TIMESTAMP >= trunc(SYSTIMESTAMP - INTERVAL '2' DAY) 

Однако, я думаю, что это должно быть «1» день во втором состоянии.

+0

Да, правильно, это должен быть один день. Но, как насчет скрипта работает в 00:01, тогда интервал -1 не укажет на последний день. это главный вопрос, могу ли я явно сказать, чтобы выполнить запросы в эту дату, начатые в 00 и предыдущую дату, начатую в 00 – Sam

+0

. Она должна работать в 12:01 –

+0

, но это дает результаты от вчерашнего дня в 12:01 к текущему времени , Я хочу, чтобы это было со вчерашнего дня в 12:00 до сегодняшнего дня в 12:00. – Sam

Смежные вопросы