Oracle - Manejo de Fechas en Oracle

   
Vista:

Manejo de Fechas en Oracle

Publicado por Alexis (1 intervención) el 14/11/2015 20:40:39
Saludos!

Soy nuevo en Oracle y estoy aprendiendo... les quería hacer una consulta sobre el uso de fechas... Tengo en mi base de datos una tabla con uno de los campos en formato Date... necesito verificar cuál de las fechas son sábado o domingo para contarlas. La salida es un simple COUNT pero no estoy seguro de los argumentos en la sentencia del select. Entiendo que debo manejar el formato de fecha.

He hecho la siguiente consulta pero la misma me manda error de "missing expresion"

Select TO_CHAR (ckout_date,('DAY')) AS "Date" from Books where (Select TO_CHAR (ckout_date,('DAY')))='SATURDAY' OR (Select TO_CHAR (ckout_date,('DAY')))='SUNDAY';

Algún consejo útil? Creo que el problema es mi comparación.

Igual me pasa con una consulta donde debo usar solo el año (Ej. 2014) para hacer una selección.

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Manejo de Fechas en Oracle

Publicado por Laura Carvajal (4 intervenciones) el 15/11/2015 07:14:28
creo que te puede ayudar lo siguiente:

SELECT TO_CHAR(TO_DATE(mi_fecha),'DAY') FROM Mi_Tabla;

esto te debe devolver los valores de días de semana como por ejemplo LUNES, MARTES, etc...

Lo que no sé es cómo puedes hacer la comparación para determinar si dicho resultado es sábado o domingo... no se me ocurre cómo debe ser el WHERE de la consulta

Espero sea de ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Manejo de Fechas en Oracle

Publicado por Rafael (178 intervenciones) el 16/11/2015 09:38:36
A ver no te lies:

Si quieres contar cuantos registros coinciden con fecha en sabados y domingos con algo asi te debe funcionar:
1
2
3
4
5
6
SELECT TO_CHAR(CKOUT_DATE,('d')) AS 'Dia Semana'
     , COUNT(*) AS 'Num Dias'
FROM   BOOKS
WHERE  TO_CHAR(CKOUT_DATE, 'd') IN ('6', '7')
AND    TO_CHAR(CKOUT_DATE, 'yyyy') = '2014'
GROUP BY TO_CHAR(CKOUT_DATE,('d')) ;

La primer condicion del WHERE limita los dias a 6 y 7 que deberian de ser SAbado y Domingo si en la region que tienes configurada, la semana comienza en lunes.
La segunda limita al año 2014....

Ahora bien si quieres el conteo total de registros sin importar si es sabado o domingo
1
2
3
4
SELECT COUNT(*) AS 'Num Dias'
FROM   BOOKS
WHERE  TO_CHAR(CKOUT_DATE, 'd') IN ('6', '7')
AND    TO_CHAR(CKOUT_DATE, 'yyyy') = '2014';

Ahora si lo que quieres contar es CUANTOS SABADOS y DOMINGOS sin importar el numero de registros esto es diferente ya que lo que deberias de contar es algo como:
1
... COUNT (DISTINCT(CKOUT_DATE)) ...

Para cualquiera de las dos modalidades. Espero te sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar