Как получить текущий год с помощью SQL на Oracle?
Мне нужно добавить текущий год в качестве переменной в инструкции SQL, как я могу получить текущий год с помощью SQL?
т. е.
BETWEEN TO_DATE('01/01/**currentYear** 00:00:00', 'DD/MM/YYYY HH24:MI:SS') AND TO_DATE('31/12/**currentYear** 23:59:59', 'DD/MM/YYYY HH24:MI:SS')
6 ответов:
С помощью to_char:
select to_char(sysdate, 'YYYY') from dual;
в вашем примере вы можете использовать что-то вроде:
BETWEEN trunc(sysdate, 'YEAR') AND add_months(trunc(sysdate, 'YEAR'), 12)-1/24/60/60;
значения сравнения именно то, что вы просите:
select trunc(sysdate, 'YEAR') begin_year , add_months(trunc(sysdate, 'YEAR'), 12)-1/24/60/60 last_second_year from dual; BEGIN_YEAR LAST_SECOND_YEAR ----------- ---------------- 01/01/2009 31/12/2009
другой вариант:
SELECT * FROM TABLE WHERE EXTRACT( YEAR FROM date_field) = EXTRACT(YEAR FROM sysdate)
использовать
extract(datetime)
функция это так просто, просто.он возвращает год, месяц, день, минуту, секунду!--3-->
пример:
select extract(year from sysdate) from dual;
поскольку мы делаем это до смерти - вам не нужно указывать год:
select * from demo where somedate between to_date('01/01 00:00:00', 'DD/MM HH24:MI:SS') and to_date('31/12 23:59:59', 'DD/MM HH24:MI:SS');
однако принятый ответ Ферранба имеет больше смысла, если вы хотите указать все значения дат, которые попадают в текущий год.