Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

[SOLUCIONADO] Sacar día de la semana

Estas en el tema de Sacar día de la semana en el foro de Oracle en Foros del Web. Pues eso, buscando por internet no logro encontrarlo. Sería lo siguiente "Informe de los alumnos que se matricularon en la universidad un lunes." Con un ...
  #1 (permalink)  
Antiguo 08/08/2013, 10:16
 
Fecha de Ingreso: agosto-2013
Mensajes: 8
Antigüedad: 10 años, 8 meses
Puntos: 0
Pregunta Sacar día de la semana

Pues eso, buscando por internet no logro encontrarlo.

Sería lo siguiente "Informe de los alumnos que se matricularon en la universidad un lunes."

Con un SELECT * FROM alumnos ....

Es decir, debe ir en el "where", intento "datepart(weekday, fecha_prim_matricula) = 1;) pero nada, ¿alguna idea?

Tambien doy como dato (aunque sea insignificativo) que las fechas vienen como DD/MM/YY.
  #2 (permalink)  
Antiguo 08/08/2013, 10:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar día de la semana

No existe la función DATEPART() en MySQL.
Ver manual de referencia: https://dev.mysql.com/doc/refman/5.6...functions.html

Las funciones de cualquier tipo, salvo un pequeño número de ellas como MONTH(), DAY(), YEAR() y algunas así, no son portables entre diferentes DBMS.
Código MySQL:
Ver original
  1. SELECT * FROM alumnos
  2. WHERE DAYOFWEEK(fecha_prim_matricula) = 1;

Cita:
Tambien doy como dato (aunque sea insignificativo) que las fechas vienen como DD/MM/YY.
Eso significaría dos cosas:por un lado que tienes un campo de fecha que es VARCHAR, lo que sería un espanto. Y por otro, que estás usando fechas con años de dos dígitos, lo que se dejó de hacer hace más de diez años...
revisa eso porque te puede causar enormes problemas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 08/08/2013 a las 12:57
  #3 (permalink)  
Antiguo 08/08/2013, 11:39
 
Fecha de Ingreso: agosto-2013
Mensajes: 8
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Sacar día de la semana

Muchas gracias.

No me tira, pero ya será problema por como dices las fechas, lo que me dieron para trabajar es horrible, la verdad.
  #4 (permalink)  
Antiguo 08/08/2013, 11:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar día de la semana

Te conviene modificar esa columna o bien convertirla dinámicamente a fecha, con STR_TO_DATE()

¿Es un VARCHAR?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/08/2013, 12:51
 
Fecha de Ingreso: agosto-2013
Mensajes: 8
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Sacar día de la semana

No, es tipo "date", y no puedo modificarla, está en una base de datos externa a la que estoy usando y es de solo uso.
  #6 (permalink)  
Antiguo 08/08/2013, 12:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar día de la semana

Si es un DATE, entonces esto debería funcionar, por ejemplo, para un día lunes:
Código MySQL:
Ver original
  1. SELECT * FROM alumnos
  2. WHERE DAYOFWEEK(fecha_prim_matricula) = 2;
Debes tener en cuenta que los días se numeran desde domingo (1) a sábado (7).

¿Exactamente qué es lo que necesitas lograr? ¿Qué tienes que buscar?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/08/2013, 12:58
 
Fecha de Ingreso: agosto-2013
Mensajes: 8
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Sacar día de la semana

Que en la lista de alumnos, mirar cuals e matriculó un lunes.

Creo que me confundí, no es Mysql, es en SQL, y debería ir en BDs General, lo siento

Estoy usando Oracle SQL Developer.
  #8 (permalink)  
Antiguo 08/08/2013, 13:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar día de la semana

SQL es el lenguaje de consultas. No el motor de bases de datos.
¿Te refieres a SQL Server, Oracle, DB2, Postgre o qué otra cosa?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 08/08/2013, 13:12
 
Fecha de Ingreso: agosto-2013
Mensajes: 8
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Sacar día de la semana

Según me explicaron es unar SQL DML con el programa Oracle SQL Developer, para acceder a partes de una tabla puntuales acotando la búsqueda.

Como en este caso, que busco solamente los datos de la tabla que la fecha de matriculación caigan en un lunes.

PD: lo acabo de sacar :), esta era la solución que conseguí.

select *

from alumnos

where lower(to_char(fecha_prim_matricula,'day')) LIKE '%lunes%';

Muchas gracias por todo :3
  #10 (permalink)  
Antiguo 08/08/2013, 13:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar día de la semana

DML es el acrónimo de Data Management Language, y se refiere a las sentencias que manipulan datos, tales como SELECT, UPDATE y DELETE.

Te recomiendo leer lo básico de SQL antes de proseguir, para evitar que te confundas con algunas respuestas bastante técnicas que vas a obtener en los foros de BBDD. Es muy habitual que demos por sentado que el forista entiende lo que decimos con ciertos términos.

En tu caso la consulta se escribe completamente diferente, por cuanto las funciones no están completamente estandarizadas entre los diferentes DBMS.

Oracle sí dispone de la función DATEPART(http://docs.oracle.com/cd/E10530_01/...s/datepart.htm), aunque eso dependerá de la versión usada, porque por ejemplo, con la versión de Orcle 9.x, no lo puedes hacer,y sería:

Código SQL:
Ver original
  1. SELECT * FROM alumnos
  2.     WHERE TO_CHAR(fecha_prim_matricula, 'D') = '2¡;

Movido al foro de Oracle
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 08/08/2013, 13:34
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Sacar día de la semana

Hola HeijiKun:

Con permiso de gnzsoloyo. Estás equivocándote completamente con los conceptos de Base de Datos... Tal como te lo mencionaron en el post anterior: SQL Es un lenguaje de consultas, y está compuesto por dos partes:

Lenguaje de Definición de Datos (DDL).
Lenguaje de Manipulación de Datos (DML).

Cuando hablas de SQL DML, NO ESTÁS HABLANDO DE UN SISTEMA MANEJADOR DE BASE DE DATOS... checa estas ligas para que tengas el contexto de lo que estamos hablando:

http://es.wikipedia.org/wiki/SQL

http://es.wikipedia.org/wiki/DBMS

Cuando hablas de ORACLE SQL Developer... este TAMPOCO ES UN SISTEMA MANEJADOR DE BASE DE DATOS. Este es un IDE (Integrated Development Environment), es decir, una herramienta de administración gráfica que te permite conectarte a casi cualquier Base de Datos, aunque está pensada principalmente para conectarte a una base de datos de ORACLE.

http://en.wikipedia.org/wiki/Oracle_SQL_Developer

Podría apostar mi desayuno de mañana a que estás trabajando con alguna versión de ORACLE, pero para poder darte una respuesta puntual necesitamos que saber exactamente qué Motor de Base de Datos estás utilizando... la sintaxis entre cada uno de ellos es muy distinta:

En MySQL sería como te comentó gnzsoloyo con la función DAYOFWEEK:

Código MySQL:
Ver original
  1. SELECT * FROM alumnos WHERE DAYOFWEEK(fecha_prim_matricula) = 2;

En SQL Server sería como lo intentaste con DATEPART:

Código SQL:
Ver original
  1. SELECT * FROM alumnos
  2. WHERE DATEPART(weekday, fecha_prim_matricula) = 2;

En ORACLE sería con la función TO_CHAR:

Código SQL:
Ver original
  1. SELECT * FROM alumnos
  2. WHERE TO_CHAR(fecha_prim_matricula, 'D') = 2;

y así podría continuar con todos los DBMS... cada uno puede tener una forma distinta para hacerlo.

Saludos
Leo.
  #12 (permalink)  
Antiguo 08/08/2013, 13:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Sacar día de la semana

Jajajajajaja... como muchas veces gnzsoloyo se me adelantó con la respuesta

Saludos!
Leo.
  #13 (permalink)  
Antiguo 08/08/2013, 13:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Sacar día de la semana


No problem...

De todos modos tus respuestas siempre son detalladas, precisas y bien ejemplificadas. Da gusto leerlas.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 10/08/2013, 12:00
 
Fecha de Ingreso: agosto-2013
Mensajes: 8
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Sacar día de la semana

Da gusto leeros a ambos, muchas gracias, y la verdad, es ORACLE, ya que de los tres es el único que me funciona

Etiquetas: mysql, select, semana
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:07.