Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Extaer fecha y desglosar de un campo (https://www.clubdelphi.com/foros/showthread.php?t=83522)

jafera 26-06-2013 18:29:20

Extaer fecha y desglosar de un campo
 
Buenas de nuevo,

Otra vez dando guerra con las conversiones de tipos y siguiendo con el programita que me he propuesto sacar adelante, necesito unos consejos para saber si se puede y como, el sacar la fecha de nacimiento de una cadena que tiene el siguiente formato:

ESP19630225

Esto es un codigo UCI (de los ciclistas), y este es el mio personal, yo lo que necesito es primero extraer las tres letras de la izquierda lo cual ya tengo solucionado con:
Código SQL [-]
UPDATE CTR0003 SET NACIO = (SUBSTRING(CODIUCI FROM 1 FOR 3));

De esta manera actualizo el campo nacionalidad con el valor correspondiente.

Lo siguiente es poder convertir 19630225 en un campo fecha con formato 25/02/1963, todo desde una sql que me actualice el campo fecha nacimiento de mi tabla.

Algún consejo?

Gracias a todos

Josep

defcon1_es 26-06-2013 18:49:05

Hola.

Siguiendo la misma línea que usas para extraer la nacionalidad:

Código SQL [-]
UPDATE CTR0003 SET 
  NACIO = (SUBSTRING(CODIUCI FROM 1 FOR 3)),
  FECHA_NACIMIENTO = CAST( (SUBSTRING(USERTEST FROM 10 FOR 2)||'-'||SUBSTRING(USERTEST FROM 8 FOR 2)||'-'||SUBSTRING(USERTEST FROM 4 FOR 4)) as TIMESTAMP);

jafera 26-06-2013 19:10:13

Ha sido una respuesta perfecta, pero con una pequeña modificacion ya que el formato es DATE

Codigo modificado:

Código SQL [-]
 
UPDATE CTR0003 SET
  NACIO = (SUBSTRING(CODIUCI FROM 1 FOR 3)),
  DATA_NAIX = CAST( (SUBSTRING(CODIUCI FROM 4 FOR 4)||'/'||SUBSTRING(CODIUCI FROM 8 FOR 2)||'/'||SUBSTRING(CODIUCI FROM 10 FOR 2)) as DATE);

año/mes/dia

Gracias y saludos

Josep

defcon1_es 26-06-2013 19:23:18

Cita:

Empezado por jafera (Mensaje 462819)
Ha sido una respuesta perfecta,

:D:D:D Me alegro que te haya servido.

Cita:

Empezado por jafera (Mensaje 462819)
pero con una pequeña modificación ya que el formato es DATE

Ok, eso es porque usas Dialecto 3 y yo hice la prueba en una BD con dialecto 1.

jafera 26-06-2013 19:25:47

Gracias, uso ISO8859_1 y dialecto 3, calro.

El dialecto 1 tiene alguna ventaja respecto al 3?

Saludos

Josep

Casimiro Notevi 26-06-2013 20:01:08

Cita:

Empezado por jafera (Mensaje 462812)
ESP19630225
Esto es un codigo UCI (de los ciclistas), y este es el mio personal

Y si hay otro ciclista que haya nacido ese mismo día, ¿qué hacen?

Cita:

Empezado por jafera (Mensaje 462822)
El dialecto 1 tiene alguna ventaja respecto al 3?

Ninguna, al contrario, el dialecto 3 es más completo.

jafera 26-06-2013 22:41:17

Hola a todos.

Antonio tienes razón el código se puede duplicar ya que es fácil que dos personas sean del mismo día, pero luego se complementa con el numero de licencia que en España es el DNI.

Despues haré una prueba y veré cuantos nacidos el 25/2/63 tienen licencia. (curiosidad animal)

Saludos

Josep

Nota:
Realizada la prueba somos 3 españoles nacidos el 25/2/63 con licencia, dos cicloturistas y un comisario internacional (yo)

defcon1_es 27-06-2013 09:48:57

Cita:

Empezado por jafera (Mensaje 462822)
El dialecto 1 tiene alguna ventaja respecto al 3?

Para ver las diferencias entre los dialectos 1 y 3, revisa estos link:

http://www.firebirdsql.org/manual/isql-dialects.html

http://www.ibphoenix.com/resources/d...design/doc_171

jafera 03-07-2013 17:40:58

Gracias y perdoand el retraso en responder.

Efectrivamente me quedo con dialecto 3.

El cambio funcionó a la perfección y además usé la misma estructura de la consulta para otra actualización similar.

Saludos

Josep


La franja horaria es GMT +2. Ahora son las 23:28:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi