#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')