TIPS

  • Valores Nulos
    Los valores nulos pueden causar que no se haga uso de un índice. Crea las tablas especificando...

Quién está en linea

Tenemos 6 invitados conectado

Acceso

Inciar sesión

Buscar

DBASupport
Welcome, Guest
Please Login or Register.    Lost Password?
Búsquedas en campos tipo Date
(1 viewing) 1 Guest
Go to bottom
TOPIC: Búsquedas en campos tipo Date
#1812
crasho
Senior Boarder
Posts: 50
graphgraph
User Offline Click here to see the profile of this user
Búsquedas en campos tipo Date 7 Months, 2 Weeks ago Karma: 0
Hola buen día, tengo una tabla con un campo de tipo DATE, en este campo la info que se guarda es de este tipo:

- 23/04/2009 02:17:35 p.m.
- 23/01/2010 07:10:10 p.m.
- 23/01/2010 08:22:47 p.m.

y requiero hacer búsquedas sobre este campo. he utilizado la función to_date de la siguientes maneras:

select *
from [tabla]
where [campo_fecha]=to_date('2010-01-23 071010 p.m','YYYY-MM-DD HHMI p.m')

select *
from [tabla]
where [campo_fecha]=to_date('2010-01-23 071010','YYYY-MM-DD HHMI')

Pero no me regresa el registro, sin embargo si cambio el operador = (igual) por >(mayor) me devuelve dos registros.

Me pueden decir que me está fallando?

Por cierto estoy usando ORacle 10G


Saludos y gracias
 
Logged Logged
 
Last Edit: 2010/01/23 21:07 By crasho.
  The administrator has disabled public write access.
#1813
mherlindo
Moderator
Posts: 562
graph
User Offline Click here to see the profile of this user
Re:Búsquedas en campos tipo Date 7 Months, 2 Weeks ago Karma: 3
No te faltan los segundos?
 
Logged Logged
 
DBASuppot Team
  The administrator has disabled public write access.
#1814
crasho
Senior Boarder
Posts: 50
graphgraph
User Offline Click here to see the profile of this user
Re:Búsquedas en campos tipo Date 7 Months, 2 Weeks ago Karma: 0
Hola, si tienes razón en lo que dices, fue error de dedo.

Las consultas las tengo asi:


select *
from [tabla]
where [campo_fecha]=to_date('2010-01-23 071010 p.m','YYYY-MM-DD HHMISS p.m')

select *
from [tabla]
where [campo_fecha]=to_date('2010-01-23 071010','YYYY-MM-DD HHMISS')


Saludos y Gracias
 
Logged Logged
  The administrator has disabled public write access.
#1816
CContreras
Moderator
Posts: 148
graphgraph
User Offline Click here to see the profile of this user
Re:Búsquedas en campos tipo Date 7 Months, 1 Week ago Karma: 4
Qué tal,
No entendí bien si al final ya pudiste y era sólo un error "de dedo", como comentas... pero ya que volviste e poner las consultas, supongo que sigues con el problema.

Intenta con este formato... el error viene por un uso lógicamente incorrecto del "p.m" (aunque en realidad es "p.m."):

Code:


SQL> create table dummy_date (id int, todayis date);

Tabla creada.

SQL> insert into dummy_date values(27,sysdate);

1 fila creada.

SQL> commit;

Validación terminada.

SQL> alter session set nls_date_format='DD-MM-YYYY HH24:MI:SS' ;

Sesión modificada.

SQL> select * from dummy_date;

        ID TODAYIS
---------- -------------------
        27 25-01-2010 09:37:05

SQL> select * from dummy_date where TODAYIS=to_date('25-01-2010 09:37:05','DD-MM-YYYY HH24:MI:SS');

        ID TODAYIS
---------- -------------------
        27 25-01-2010 09:37:05




Un saludo,
Carlos Isaac Contreras.
DBASupport Team.
 
Logged Logged
 
DBASupport Team
  The administrator has disabled public write access.
#1822
crasho
Senior Boarder
Posts: 50
graphgraph
User Offline Click here to see the profile of this user
Re:Búsquedas en campos tipo Date 7 Months, 1 Week ago Karma: 0
Hola buen día

Gracias por tu respuesta y si funciona, pero me gustaría saber, por qué me dices que estoy usando mal lo de P.M.? para guardar la fecha hago uso de Sysdate. Supongo que lo de P.M. me lo da alguna configuración de oracle?

Si quisiera cambiar dicha configuración pero ya de manera fija, qué es lo que tendría que hacer?

Saludos y Gracias de antemano
 
Logged Logged
  The administrator has disabled public write access.
#1823
CContreras
Moderator
Posts: 148
graphgraph
User Offline Click here to see the profile of this user
Re:Búsquedas en campos tipo Date 7 Months, 1 Week ago Karma: 4
Qué tal,
Con lo de "error lógico" creo que se puede haber tomado mal, me refería a que tal cual lo pusiste seguramente te mandaría un error, más bien de sintaxis (ORA-01821: formato de fecha no reconocido). Por el "P.M" sin el último punto, como ahí mismo te comenté.

Ahora, en cuanto a la configuración de la fecha... hay muchísimas formas de configurar esta variable.

Seguramente no quieres cambiar el formato de fecha para toda la BD, por lo que sólo buscas esto para un usuario:

***Antiguamente se usaba un trigger (de tipo Evento) que cambiara el formato de la fecha una vez se conectaba X usuario, pero ahora es mejor usar las variables de entorno del sistema operativo del propio cliente. Define la variable en tu S.O. (Windows, Linux, etc) NLS_LANG, o mejor aún para tu caso, NLS_DATE_FORMAT. Te pongo un ejemplo:

Code:



SQL> select sysdate from dual;

SYSDATE
--------
27/01/10

SQL> exit
Desconectado de Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options
oracle@ora9i:~> export NLS_DATE_FORMAT="DD-MM-YYYY HHMISS P.M."
oracle@ora9i:~> 
oracle@ora9i:~> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.3.0 - Production on Mié Ene 27 16:02:42 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


Conectado a:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select sysdate from dual;

SYSDATE
--------------------
27-01-2010 040246 PM




Este cambio de formato de fecha normalmente lo hacen automática e internamente casi todos los clientes (Ej: Toad, Java Drivers, etc), una vez se conectan a la instancia. Así que aunque tengas X definición a nivel BD, para este formato, el cambio del cliente lo sobreescribirá. Es decir que a veces, aunque dejes estático el formato a nivel BD, los clientes normalmente te lo cambiarán y no funcionará la "solución".

Nota: Si tienes dudas, "tracea" (trace) dichas sesiones de los clientes y verás cómo cambia los valores de NLS, tan pronto se conectan. Y te recuerdo, hay muchas más formas de cambiar esto.

Te recomiendo leer un poco sobre Character Sets y NLS en general, ya que en base a estos, van relacionados los parámetros NLS_LANGUAGE y NLS_TERRITORY. Los cuales cambiarán el valor por default de tu fecha.

Un muy buen documento sobre esto es el 241047.1. Te lo recomiendo mucho y no está largo.

Un saludo,
Carlos Contreras
DBASupport.
 
Logged Logged
 
Last Edit: 2010/01/27 09:26 By CContreras.
 
DBASupport Team
  The administrator has disabled public write access.
Go to top