Использование системной даты для фильтрации по

#sql #greenplum

#sql #greenplum

Вопрос:

Запуск sql-запроса для сбора данных с датами в заданном диапазоне. stdt — это тип данных даты. Это проблемный код:

     select hofc_wrk_unit_uid
    from mhal_rep.stusha
    where STDT BETWEEN date('2010-01-21') AND to_char(SYSDATE, 'YYYY-MM-DD')
    and ibmsnap_operation not in ('D')
    and stus_cd in ('CLSD')
  

Я продолжаю получать сообщение об ошибке «Столбец ‘SYSDATE’ не существует»

Как мне заставить ее вызвать функцию SYSDATE и прекратить поиск столбца с именем sysdate?

Пробовал это:

     select hofc_wrk_unit_uid
    from mhal_rep.stushh
    where STDT BETWEEN date('2010-01-21') AND SYSDATE()
    and stus_endt BETWEEN date('2010-01-21') AND SYSDATE()
    and stus_cd in ('DWPC')
    and ibmsnap_operation not in ('D')
  

и я получаю, что функция sysdate () не существует

Комментарии:

1. Что это за база данных? PostgreSQL, MariaDB, SQLite, HSQL и т.д.

2. использование одних точек экстремума типа date , а других типа char для date range не имеет смысла.

3. Почему вы вообще выполняете to_char()?

4. Думаю о том же. Вы должны сравнивать, используя даты, а не символы.

5. использовать current_date

Ответ №1:

Попробуйте следующее:

 select hofc_wrk_unit_uid
    from mhal_rep.stushh
    where STDT BETWEEN date('2010-01-21') AND current_date
    and stus_endt BETWEEN date('2010-01-21') AND current_date
    and stus_cd in ('DWPC')
    and ibmsnap_operation not in ('D')