Как получить запись на основе текущего месяца и года из столбца отметки времени в oracle - PullRequest
0 голосов
/ 29 апреля 2020

Как получить запись на основе текущего месяца и года из столбца отметки времени в oracle? У меня есть столбец в таблице с именем payment_time. Я хочу применить фильтр к этому столбцу на основе текущего месяца и года. Мой столбец payment_time имеет этот формат отметки времени.

20200103161803

Вложение также прикреплено для reference

1 Ответ

0 голосов
/ 29 апреля 2020

Как получить запись на основе текущего месяца и года из столбца отметок времени в oracle?

Используйте фильтр в столбце TIMESTAMP, чтобы установить верхнюю и нижнюю границы. Для нижней границы вы можете TRUNC съесть текущую дату до начала месяца, а для верхней границы вы можете сделать то же самое и добавить месяц:

SELECT payment_time
FROM   CPDB_TEST_REPORTS.T_X_G2P_EXE_REPORT_N
WHERE  G2PORG_SHORTCODE = '00164752'
AND    payment_time >= TRUNC( SYSDATE, 'MM' )
AND    payment_time <  ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 1 )

Вы также можете использовать TRUNC для столбца payment_time (однако, Oracle не будет использовать индекс для столбца payment_time и потребуется отдельный индекс на основе функций для TRUNC( payment_time )):

SELECT payment_time
FROM   CPDB_TEST_REPORTS.T_X_G2P_EXE_REPORT_N
WHERE  G2PORG_SHORTCODE = '00164752'
AND    TRUNC( payment_time, 'MM' ) >= TRUNC( SYSDATE, 'MM' )

Если ваш Столбец payment_time на самом деле не является типом данных TIMESTAMP, но представляет собой VARCHAR2, тогда вы можете использовать точно такой же метод и просто преобразовать значения фильтра в строку чисел:

SELECT payment_time
FROM   CPDB_TEST_REPORTS.T_X_G2P_EXE_REPORT_N
WHERE  G2PORG_SHORTCODE = '00164752'
AND    payment_time >= TO_CHAR( TRUNC( SYSDATE, 'MM' ), 'YYYYMMDDHH24MISS' )
AND    payment_time <  TO_CHAR( ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 1 ), 'YYYYMMDDHH24MISS' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...