elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 08:18  

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos
| | | |-+  SQL--Where fechas (Condición de fechas)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: SQL--Where fechas (Condición de fechas)  (Leído 4,140 veces)
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
SQL--Where fechas (Condición de fechas)
« en: 4 Marzo 2010, 19:53 »

Hola,Buenas noches.
Tengo un problema a la hora de realizar una consulta con una condición por meses.

¿Alguien sabría decirme que tipo de condición hacer?

Ejemplo 1: Consulta total de registros por mes

Ejemplo 2: Consulta total de registros entre 2 fechas

Saludos


En línea
Shell Root


Desconectado Desconectado

Mensajes: 2.400


Alex Jurado


Ver Perfil WWW
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #1 en: 4 Marzo 2010, 20:56 »

WTF!... Algo así?
Código
SELECT COUNT(*) FROM tblUsuario
WHERE(strFecha = '01/02/2010') AND (strFecha = '28/02/2010')


En línea

---
Novlucker
Ninja y
Ex-Staff
*
Desconectado Desconectado

Mensajes: 10.225


Yo que tu lo pienso dos veces


Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #2 en: 4 Marzo 2010, 21:09 »

+

group by, porque entiendo quieres sacar la cantidad de registros agrupados por mes, aunque tal vez me equivoque :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #3 en: 4 Marzo 2010, 21:35 »

Parece que no soy la unica  :xD

No entiendo bien tu peticion tampoco...

Es algo como saber cuantos registros existen por cada mes en los 12 meses???? y imprimir algo como:

ENERO: 200 registros
FEBRERO: 300 registros
MARZO: 150 registros

ect....

Y eso de total de registros por 2 fechas? Seria como:

ENERO + FEBRERO : 500 registros...

Si tu peticion es mas o menos eso.. probablemente tenga que apoyarme en el uso de un poquito de PL y cursores  :rolleyes:  o a lo mejor no, dependera de tu explicacion de que requieres...

La DB es Oracle verdad?
« Última modificación: 4 Marzo 2010, 21:37 por ^TiFa^ » En línea
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #4 en: 4 Marzo 2010, 21:38 »

Parece que no soy la unica  :xD

No entiendo bien tu peticion tampoco...

Es algo como saber cuantos registros existen por cada mes en los 12 meses???? y imprimir algo como:

ENERO: 200 registros
FEBRERO: 300 registros
MARZO: 150 registros

ect....

Y eso de total de registros por 2 fechas? Seria como:

ENERO + FEBRERO : 500 registros...

Si tu peticion es mas o menos eso.. probablemente tenga que apoyarme en el uso de un poquito de PL y cursores  :rolleyes:

La DB es Oracle verdad?
Si ,Tifa esa es mi petición  ;D Y la BD es Oracle también  :)

Citar
Insertar Cita
WTF!... Algo así?
Código

SELECT COUNT(*) FROM tblUsuario
   WHERE(strFecha = '01/02/2010') AND (strFecha = '28/02/2010')
No me ha funcionado...no me devuelve ningún registro.
Pero gracias de todas formas  ;)
En línea
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.335

he vuelto :)


Ver Perfil WWW
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #5 en: 4 Marzo 2010, 21:55 »

ehm... la condicion no va en WHERE, es BETWEEN

Código
SELECT COUNT(*) FROM tblUsuario WHERE strFecha BETWEEN '01/02/2010' AND '28/02/2010'

pd: por favor gente acostumbrense a usar [code=sql][/code] al rededor de su codigo :¬¬
« Última modificación: 4 Marzo 2010, 21:57 por Nakp » En línea

Ojo por ojo, y el mundo acabará ciego.
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #6 en: 4 Marzo 2010, 22:01 »

ehm... la condicion no va en WHERE, es BETWEEN

Código
SELECT COUNT(*) FROM tblUsuario WHERE strFecha BETWEEN '01/02/2010' AND '28/02/2010'

pd: por favor gente acostumbrense a usar [code=sql][/code] al rededor de su codigo :¬¬


Sorry por lo del código.
En cuanto a la modificación de la sentencia anterior...si tengo la fecha en Date..con "TO CHAR" valdría igual no?
Me sigue sin funcionar,ahora me dice que falta una expresión...

Código
BETWEEN (CABFACTURA.FECHA='01/02/10') AND (CABFACTURA.FECHA='28/02/10')
« Última modificación: 4 Marzo 2010, 22:28 por noobdai » En línea
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.335

he vuelto :)


Ver Perfil WWW
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #7 en: 4 Marzo 2010, 22:08 »

ah? xD

mira... hablado :P

DONDE campo ENTRE valor1 Y valor2

Código
SELECT COUNT(*) FROM tabla WHEReM5CABFACTURA.FECHA BETWEEN '01/02/10' AND '28/02/10'

estas seguro que la fecha esta bien? el formato... yo las uso YYYYMMDD o DD-MM-YYYY o DD/MM/YY pero nunca XX/XX/XX
En línea

Ojo por ojo, y el mundo acabará ciego.
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #8 en: 4 Marzo 2010, 22:31 »

ahora si,pero...¿sabes como coger el mes de las fechas? :)

Saludos
En línea
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.335

he vuelto :)


Ver Perfil WWW
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #9 en: 4 Marzo 2010, 22:56 »

no se si en oracle pero prueba MONTH('fecha')

aunque no creo que sirva porque que hay entre octubre y marzo (2009-2010) es mas logico definir las fechas completas :P
En línea

Ojo por ojo, y el mundo acabará ciego.
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #10 en: 4 Marzo 2010, 23:00 »

Ok.

Muchas gracias por todo. ;-)

Saludos
En línea
^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #11 en: 5 Marzo 2010, 01:39 »

Si te inclinas por crear un procedimiento con lo siguiente como contenido... podria servirte  :rolleyes:  Donde la fecha puede pasar como parametro.

Código
 
SQL> SELECT * FROM ejemplo;
 
FECHA        SALARIO
--------- ----------
20-JAN-09      23000
15-JAN-09      14000
28-FEB-09      20000
15-FEB-08      20000
13-JAN-08      25000
27-DEC-09      20000
16-DEC-09      25000
10-DEC-09      18000
 
8 ROWS selected.
 
SQL> DECLARE
 2  SUMA INTEGER;
 3  BEGIN
 4  FOR a IN 0..12
 5  LOOP
 6  SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a;
 7  DBMS_OUTPUT.PUT_LINE('El mes :: '||a||' Tiene '||suma||' Registros');
 8  END LOOP;
 9  END;
10  /
El mes :: 0 Tiene 0 Registros
El mes :: 1 Tiene 2 Registros
El mes :: 2 Tiene 1 Registros
El mes :: 3 Tiene 0 Registros
El mes :: 4 Tiene 0 Registros
El mes :: 5 Tiene 0 Registros
El mes :: 6 Tiene 0 Registros
El mes :: 7 Tiene 0 Registros
El mes :: 8 Tiene 0 Registros
El mes :: 9 Tiene 0 Registros
El mes :: 10 Tiene 0 Registros
El mes :: 11 Tiene 0 Registros
El mes :: 12 Tiene 3 Registros
 
PL/SQL PROCEDURE successfully completed.
 
 

Tenia tiempo que no tocaba PL/SQL
En línea
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #12 en: 5 Marzo 2010, 09:05 »

Si te inclinas por crear un procedimiento con lo siguiente como contenido... podria servirte  :rolleyes:  Donde la fecha puede pasar como parametro.

Código
 
SQL> SELECT * FROM ejemplo;
 
FECHA        SALARIO
--------- ----------
20-JAN-09      23000
15-JAN-09      14000
28-FEB-09      20000
15-FEB-08      20000
13-JAN-08      25000
27-DEC-09      20000
16-DEC-09      25000
10-DEC-09      18000
 
8 ROWS selected.
 
SQL> DECLARE
 2  SUMA INTEGER;
 3  BEGIN
 4  FOR a IN 0..12
 5  LOOP
 6  SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a;
 7  DBMS_OUTPUT.PUT_LINE('El mes :: '||a||' Tiene '||suma||' Registros');
 8  END LOOP;
 9  END;
10  /
El mes :: 0 Tiene 0 Registros
El mes :: 1 Tiene 2 Registros
El mes :: 2 Tiene 1 Registros
El mes :: 3 Tiene 0 Registros
El mes :: 4 Tiene 0 Registros
El mes :: 5 Tiene 0 Registros
El mes :: 6 Tiene 0 Registros
El mes :: 7 Tiene 0 Registros
El mes :: 8 Tiene 0 Registros
El mes :: 9 Tiene 0 Registros
El mes :: 10 Tiene 0 Registros
El mes :: 11 Tiene 0 Registros
El mes :: 12 Tiene 3 Registros
 
PL/SQL PROCEDURE successfully completed.
 
 

Tenia tiempo que no tocaba PL/SQL

Muchas gracias Tifa te lo has currado  ;-) pero necesito que sea SQL ya que PL/SQL no lo hemos tocado en clase. :(
En línea
^Tifa^


Desconectado Desconectado

Mensajes: 2.802


Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #13 en: 5 Marzo 2010, 13:22 »

Pues puro SQL

Código
 
SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a;
 
 

En línea
noobdai

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: SQL--Where fechas (Condición de fechas)
« Respuesta #14 en: 5 Marzo 2010, 18:35 »

Pues puro SQL

Código
 
SELECT COUNT(SALARIO) INTO SUMA FROM EJEMPLO WHERE FECHA > '31-DEC-08' AND SUBSTR((TO_CHAR(FECHA, 'DD/MM/YY')), 4, 2) = a;
 
 



Nuca había utilizado "SUBSTR"..mmm lo probaré :-\
Gracias Saludos ;D
En línea
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
SUMA DE DOS FECHAS
Dudas Generales
GACHEFABI 2 457 Último mensaje 11 Diciembre 2011, 21:42
por Aberroncho
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines