sql - sentencias - select oracle ejemplos
¿Cómo obtengo el año actual utilizando SQL en Oracle? (6)
Dado que estamos haciendo esto hasta la muerte, no es necesario especificar un año:
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'');
Sin embargo, la respuesta aceptada por FerranB tiene más sentido si desea especificar todos los valores de fecha que caen dentro del año actual.
Necesito agregar el año actual como una variable en una declaración SQL, ¿cómo puedo recuperar el año actual usando SQL?
es decir
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'')
Otra opción es:
SELECT *
FROM TABLE
WHERE EXTRACT( YEAR FROM date_field) = EXTRACT(YEAR FROM sysdate)
Para mostrar la fecha actual del sistema en oracle-sql
select sysdate from dual;
Sin embargo, otra opción sería:
SELECT * FROM mytable
WHERE TRUNC(mydate, ''YEAR'') = TRUNC(SYSDATE, ''YEAR'');
Usando to_char:
select to_char(sysdate, ''YYYY'') from dual;
En su ejemplo, puede usar algo como:
BETWEEN trunc(sysdate, ''YEAR'')
AND add_months(trunc(sysdate, ''YEAR''), 12)-1/24/60/60;
Los valores de comparación son exactamente lo que solicita:
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
Use la función extract(datetime)
es muy fácil, simple.
Devuelve año, mes, día, minuto, segundo
Ejemplo:
select extract(year from sysdate) from dual;