transponer sentencias registros multiple ejemplos dinamico consultas columns columnas 10g sql oracle date

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;