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

consulta MYSQL FECHA

Estas en el tema de consulta MYSQL FECHA en el foro de Mysql en Foros del Web. hola amigos me veo la obligacion de postear esta consulta ya que no me entra como la puedo hacer no se si sera la hora ...
  #1 (permalink)  
Antiguo 16/07/2008, 02:04
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
consulta MYSQL FECHA

hola amigos me veo la obligacion de postear esta consulta ya que no me entra como la puedo hacer no se si sera la hora o q ya mis neuronas no funcionan kakaka les cuento tengo una tabla inscripcion las cual esta onpuesta por los siguientes atributos

cod_reg |alumno_rut|beca_codigo|curso_alumno|fecha_inscrip cion|año_inscripcion

creo q no tengo para q describir los campos solo que nesesito los registros que se encuentren registrados en el año 2007 y q no se encuentren registrados 2008 osea me explico

1|1111111|beca-1|1-a|2007-01-05|2007
2|2222222|beca-2|1-a|2007-02-09|2007
3|1111111|beca-3|1-b|2008-01-05|2008

lo que deveria arrojarme la consulta es el alumno rut 2222222 ya que se encuentra registrado el 2007 pero no el 2008
bueno eso gracias...
  #2 (permalink)  
Antiguo 16/07/2008, 09:12
 
Fecha de Ingreso: junio-2008
Ubicación: Cali, Colombia
Mensajes: 74
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: consulta MYSQL FECHA

Hola blackrocha, para hacer consultas con fechas puedes hacerlo de la siguente manera:

Código:
campo_fecha = STR_TO_DATE('2007-01-01','%Y-%m-%d')
Espero te sirva

Saludos
  #3 (permalink)  
Antiguo 16/07/2008, 10:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta MYSQL FECHA

Cita:
Iniciado por maiden17 Ver Mensaje
Hola blackrocha, para hacer consultas con fechas puedes hacerlo de la siguente manera:

Código:
campo_fecha = STR_TO_DATE('2007-01-01','%Y-%m-%d')
Espero te sirva

Saludos
Nop... Esta es sintaxis de Oracle, no de MySQL.
Las funciones que te devuelven datos de una fecha en MySQL son:
- Año: YEAR(fecha)
- Mes: MONTH(fecha)
- Día: DAY(fecha)
- Hora: HOUR(fecha)
- Minutos: (MINUTE(fecha)
- Segundos: SECOND(fecha)

- Hora completa: TIME(fecha)

- Fecha completa de un DateTime: DATE(fecha)

Para el resto, leer el Manual de referencia, 12.5. Funciones de fecha y hora
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 16/07/2008, 15:49
 
Fecha de Ingreso: junio-2008
Ubicación: Cali, Colombia
Mensajes: 74
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: consulta MYSQL FECHA

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Nop... Esta es sintaxis de Oracle, no de MySQL.
Las funciones que te devuelven datos de una fecha en MySQL son:
- Año: YEAR(fecha)
- Mes: MONTH(fecha)
- Día: DAY(fecha)
- Hora: HOUR(fecha)
- Minutos: (MINUTE(fecha)
- Segundos: SECOND(fecha)

- Hora completa: TIME(fecha)

- Fecha completa de un DateTime: DATE(fecha)

Para el resto, leer el Manual de referencia, 12.5. Funciones de fecha y hora
Lo que coloque anteriormente es para hacer consultas deacuerdo a una fecha por ejemplo, quiero saber que registros son del 2008-07-16:

Código:
SELECT * FROM tabla WHERE campo_fecha = STR_TO_DATE('2007-07-16','%Y-%m-%d');
En el manual de referencia aparece la funcion STR_TO_DATE
  #5 (permalink)  
Antiguo 16/07/2008, 17:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta MYSQL FECHA

Lo siento, en el apuro confundí tu STR_TO_DATE con TO_CHAR, que es la función en Oracle.
De todos modos, como yo lo veo la cosa es así:
Si lo que quieres es los alumnos que están inscriptos en 2007, pero que no lo están en 2008, el tema no es comparar las fechas, y menos aún hacer conversiones innecesarias como la de STR_TO_DATE('2007-07-16','%Y-%m-%d').
Esta conversión no se necesita porque MySQL cuando realiza una comparación entre un campo DATE contra un String que tiene el formato correcto (yyyy-MM-dd), hace la conversión en forma automática. Ni siquiera tienes que perder el tiempo en pensarlo.
Además, como ya dije, la cosa no es con una fecha determinada. Lo que quieres saber es si los de 2007 no estuvieron en 2008, no si se inscribieron en una fecha determinada.

Eso se responde mejor con una subconsulta:
Código:
SELECT * 
FROM tabla 
WHERE cod_reg NOT IN  
    (
    SELECT cod_reg
    FROM tabla 
    WHERE año_inscripcion =2008
    );
En caso de no usar año_inscripción, sino fecha_inscripción, sería:
Código:
SELECT * 
FROM tabla 
WHERE cod_reg NOT IN  
    (
    SELECT cod_reg
    FROM tabla 
    WHERE YEAR(fecha_inscripcion) =2008
    );
__________________
¿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; 17/07/2008 a las 12:01
  #6 (permalink)  
Antiguo 17/07/2008, 10:27
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Respuesta: consulta MYSQL FECHA

me enbia mensaje de error de escritura lo q pasa es que toy usando mysql v 3.2 y no me deja ejecutar la consulta error de sintaxsis y la tengo asi

SELECT *
FROM inscripcion_alumno__inal
WHERE ALUM_RUT NOT IN SELECT ALUM_RUT FROM inscripcion_alumno__inal WHERE INAL_FECHA_INSCRIPCION_ALUMNO = 2008

me embia esto
error sisntaxis 'SELECT ALUM_RUT FROM inscripcion_alumno__inal WHERE INAL_FECHA_INSCRIPCION_ALUMNO '
me coloca unas comillas simples en la subconsulta
.....
  #7 (permalink)  
Antiguo 17/07/2008, 12:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta MYSQL FECHA

Cita:
Iniciado por blackrocha Ver Mensaje
me enbia mensaje de error de escritura lo q pasa es que toy usando mysql v 3.2 y no me deja ejecutar la consulta error de sintaxsis y la tengo asi

SELECT *
FROM inscripcion_alumno__inal
WHERE ALUM_RUT NOT IN SELECT ALUM_RUT FROM inscripcion_alumno__inal WHERE INAL_FECHA_INSCRIPCION_ALUMNO = 2008

me embia esto
error sisntaxis 'SELECT ALUM_RUT FROM inscripcion_alumno__inal WHERE INAL_FECHA_INSCRIPCION_ALUMNO '
me coloca unas comillas simples en la subconsulta
.....
Presta atención que la consulta que va después del IN tiene que ir encerrada entre paréntesis.
Mira el manual: 13.2.8. Sintaxis de subconsultas
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 17/07/2008, 12:02
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta MYSQL FECHA

Has mezclado, creo, las propuestas de gnzsoloyo. Intentalo así:

SELECT *
FROM inscripcion_alumno__inal
WHERE ALUM_RUT NOT IN (SELECT ALUM_RUT FROM inscripcion_alumno__inal WHERE YEAR(INAL_FECHA_INSCRIPCION_ALUMNO) = 2008)
  #9 (permalink)  
Antiguo 17/07/2008, 12:19
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Respuesta: consulta MYSQL FECHA

bucha intente de las dos formas y me arroja error #1064 . respuesta de la base de datos
you have an error in your sql syntax near

'SELECT ALUM_RUT FROM inscripcion_alumno__inal
WHERE YE' on line 3

la que utilise fue esta:
SELECT *
FROM inscripcion_alumno__inal
WHERE ALUM_RUT NOT IN (SELECT ALUM_RUT FROM inscripcion_alumno__inal WHERE YEAR(INAL_FECHA_INSCRIPCION_ALUMNO) = 2008)

es como si no aceptara sub consultas he intentando de varias formas como lo puso el gnsloyo y no me resulta que mas puede ser .... estoy trabajando mysqlfront 3.2 y phptriad 2.0 podria ser eso ....
  #10 (permalink)  
Antiguo 17/07/2008, 12:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta MYSQL FECHA

Código:
SELECT * 
FROM tabla 
WHERE cod_reg NOT IN  
    (
    SELECT cod_reg
    FROM tabla 
    WHERE YEAR(fecha_inscripcion) =2008
    );
Probá...
__________________
¿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 17/07/2008, 12:42
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Respuesta: consulta MYSQL FECHA

:( igual me manda el mismo error de numero y... you have an error in your sql syntax near
siempre me arroja en la subconsulta :(

Última edición por blackrocha; 17/07/2008 a las 12:49
  #12 (permalink)  
Antiguo 17/07/2008, 13:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta MYSQL FECHA

Al parecer, en esa versión de MySQL no se aceptan subconsultas. Esto de las subconsultas parece más reciente en MySQL, aunque no sabría decirte yo en qué versión se introdujeron.
Si no das con una solución de base de datos, tendrás que usar programación para obtener los resultados. La otra opción es actualizar la base, aunque tampoco sabemos si eso depende completamente de ti.
  #13 (permalink)  
Antiguo 17/07/2008, 14:28
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Respuesta: consulta MYSQL FECHA

y como podria actualisar la base de datso entonces si trabajo con el phptriad 3.2
  #14 (permalink)  
Antiguo 17/07/2008, 14:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta MYSQL FECHA

Intenta esta consulta, por si funcionara:
SELECT b.*
FROM inscripcion_alumno__inal b
LEFT JOIN (SELECT ALUM_RUT AS alumno, YEAR(INAL_FECHA_INSCRIPCION_ALUMNO) as año FROM inscripcion_alumno__inal WHERE year (INAL_FECHA_INSCRIPCION_ALUMNO) =2008) t1 ON b.alum_rut = T1.alumno WHERE t1. INAL_FECHA_INSCRIPCION_ALUMNO IS NULL
  #15 (permalink)  
Antiguo 17/07/2008, 14:43
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Respuesta: consulta MYSQL FECHA

definitivamente son las sub consultas por q me dice lo mismo error 1064 sintax error ....
sabes como upsatear la bd.
  #16 (permalink)  
Antiguo 17/07/2008, 14:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta MYSQL FECHA

Creo que tienes que actualizar, pero yo no sabría aconsejarte el modo de hacerlo.
Sin embargo, no debes descartar la posibilidad de hacer la consulta y la subconsulta mediante dos consultas y con programación hacer el trabajo.
Me explico:
primero buscas los que tienen el año 2008
select alumno_rut from tutabla where year(fecha)=2008 order by alumno_rut
Luego, mediante programación, cargas los resultados en una cadena, separandolos con coma y poniendo paréntesis para que te quede (1,3,4,6,7)
Luego lanzas la segunda consulta
select alumno_rut from tutabla where year(fecha)=2007 AND alumno_rut not in (1,3,4,6,7)
donde pone (1,3,4,6,7), escribes, claro, la variable de esa cadena.
Y pienso que obtendrías lo que quieres.
También creo que la mejor solución será actualizarte, pero ya sabes que eso requiere guardar copias de seguridad e ir haciendo pruebas progresivamente para evitar sustos mayores, y si solo se trata de esta consulta, yo probaría también a resolverlo con programación.
  #17 (permalink)  
Antiguo 17/07/2008, 15:00
 
Fecha de Ingreso: junio-2008
Ubicación: Cali, Colombia
Mensajes: 74
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: consulta MYSQL FECHA

Actualiza tu version de MySQL, ya vamos por la version 5.1 rc y 6 Beta
  #18 (permalink)  
Antiguo 17/07/2008, 15:01
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Respuesta: consulta MYSQL FECHA

hola sabes que estoy probando esta consulta en mysql 4... y me tira nada q ver los resultados que quiero

SELECT Alumnos__Alum.Alum_Rut,
Alumnos__Alum.Alum_nombres,
Alumnos__Alum.Alum_Apellido_Paterno,
Alumnos__Alum.Alum_Apellido_Materno,
Inscripcion_Alumno__InAl.Curs_Curso_Alumno,
Inscripcion_Alumno__InAl.INAL_FECHA_INSCRIPCION_AL UMNO
FROM Alumnos__Alum,
Inscripcion_Alumno__InAl
where
Alumnos__Alum.Alum_Rut LIKE '11111111-1' and Alumnos__Alum.Alum_rut=Inscripcion_Alumno__InAl.Al um_Rut
and Inscripcion_Alumno__InAl.ALUM_RUT NOT IN
(
SELECT Inscripcion_Alumno__InAl.ALUM_RUT
FROM inscripcion_alumno__inal
WHERE Inscripcion_Alumno__InAl.AGNO_INSCRIPCION='2008'
)";

supuestamente deveria arrojarme solo los que estan inscritos en el 2007 pero me arroja los q estan inscritos en el 2007 y en el 2008 y menos los q estan inscritos en el 2007 nada mas sin estarlo en el 2008
:(
lo otro es q voy a tener q updatear si o si la bd por q ya me di cuenta q es la vercion no soporta las subconsultas...
gracias
  #19 (permalink)  
Antiguo 17/07/2008, 15:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: consulta MYSQL FECHA

blackrocha,
mira el post mío anterior a este y considera la posibilidad de hacerlo con programación y dos consultas.
  #20 (permalink)  
Antiguo 17/07/2008, 15:47
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 20 años
Puntos: 1
Respuesta: consulta MYSQL FECHA

voy a tratar de hacerlo por codigo te aviso gracias te todas formas...
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 22:17.