Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2016
KOVNEO KOVNEO is offline
Registrado
NULL
 
Registrado: mar 2016
Posts: 5
Poder: 0
KOVNEO Va por buen camino
cambiar año de varias fechas firebird

Soy nuevo en el foro tengo la tarea de cambiar la fecha de unos registros con años de 1999 a 2015
Los registros traen la fecha en el formato dd/mm/aaaa lo único que deseo cambiar es el año sin alterar los días y meses, y al ser años distintos no puedo ocupar DATEADD si me pudieran ayudar
Solo he encontrado como cambiar año por año pero al ser varios años distintos me tardaría más en actualizar año por año, aunque sea buena solución me gustaría me pudieran asesorar como podría hacerlo en un solo UPDATE
El que yo he hecho es sencillo:
Código SQL [-]
UPDATE DOCTOS_IN SET FECHA =DATEADD(13 year to FECHA)
 WHERE EXTRACT(YEAR FROM FECHA) LIKE '%2003';

Y lo que se me ocurría también pero no sé cómo hacer la asignación de que el año sea 2015.
Código SQL [-]
UPDATE DOCTOS_IN SET FECHA =……………………..
 WHERE EXTRACT(YEAR FROM FECHA) NOT LIKE '%2016';

Última edición por Casimiro Notevi fecha: 03-03-2016 a las 18:30:29. Razón: Recuerda poner los tags al código fuente
Responder Con Cita
  #2  
Antiguo 03-03-2016
Avatar de RONPABLO
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Registrado: oct 2004
Posts: 1.514
Poder: 21
RONPABLO Va por buen camino
Cita:
Empezado por KOVNEO Ver Mensaje
Soy nuevo en el foro tengo la tarea de cambiar la fecha de unos registros con años de 1999 a 2015
Los registros traen la fecha en el formato dd/mm/aaaa lo único que deseo cambiar es el año sin alterar los días y meses, y al ser años distintos no puedo ocupar DATEADD si me pudieran ayudar
Solo he encontrado como cambiar año por año pero al ser varios años distintos me tardaría más en actualizar año por año, aunque sea buena solución me gustaría me pudieran asesorar como podría hacerlo en un solo UPDATE
El que yo he hecho es sencillo:
Código SQL [-]
UPDATE DOCTOS_IN SET FECHA =DATEADD(13 year to FECHA)
 WHERE EXTRACT(YEAR FROM FECHA) LIKE '%2003';

Y lo que se me ocurría también pero no sé cómo hacer la asignación de que el año sea 2015.
Código SQL [-]
UPDATE DOCTOS_IN SET FECHA =……………………..
 WHERE EXTRACT(YEAR FROM FECHA) NOT LIKE '%2016';
Código SQL [-]

UPDATE DOCTOS_IN SET FECHA =DATEADD(datediff (year from FECHA to cast('now' as date)) year to FECHA)

Tal vez algo así??
Cita:
datediff = saca la diferencia (en este caso de años) entre una fecha y otra
cast('now' as date) convierte a la fecha actual del sistema en donde corre firebird
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H"
Responder Con Cita
  #3  
Antiguo 03-03-2016
KOVNEO KOVNEO is offline
Registrado
NULL
 
Registrado: mar 2016
Posts: 5
Poder: 0
KOVNEO Va por buen camino
Lo probé pero no es la solución ya que todas las fechas se cambian a la fecha del sistema, y mi problema es que quiero cambiar solo los años al 2015 todas las fechas acepto las del 2016 por ejemplo:
11/02/1999 a 11/02/2015
23/09/2010 a 23/09/2015
01/06/2012 a 01/06/2015
30/08/2000 a 30/08/2015
01/01/2016
Responder Con Cita
  #4  
Antiguo 03-03-2016
KOVNEO KOVNEO is offline
Registrado
NULL
 
Registrado: mar 2016
Posts: 5
Poder: 0
KOVNEO Va por buen camino
PERDÓN GRACIAS JAJAJAJA ME RESOLVISTE MI PROBLEMA SOLO QUE NO LO AVÍA ENTENDIDO CORRECTAMENTE

"UPDATE DOCTOS_IN SET FECHA =DATEADD(datediff (year from FECHA to cast('01/01/2015' as date)) year to FECHA)
WHERE EXTRACT(YEAR FROM FECHA) NOT LIKE '%2016';"
Responder Con Cita
  #5  
Antiguo 03-03-2016
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
A mí me sale otra sql, sin usar matemáticas, aunque dará problemas con los años bisiestos al pasarlos a 2015
Código SQL [-]
UPDATE DOCTOS_IN SET FECHA =
cast( 
  extract(day from fecha) || '/' ||
  extract(month from fecha) || '/2015' as date)
where EXTRACT(YEAR FROM FECHA) < 2016
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 04-03-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por KOVNEO Ver Mensaje
PERDÓN GRACIAS JAJAJAJA ME RESOLVISTE MI PROBLEMA SOLO QUE NO LO AVÍA ENTENDIDO CORRECTAMENTE
"UPDATE DOCTOS_IN SET FECHA =DATEADD(datediff (year from FECHA to cast('01/01/2015' as date)) year to FECHA)
WHERE EXTRACT(YEAR FROM FECHA) NOT LIKE '%2016';"
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración


Recuerda poner los tags al código fuente, ejemplo:

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Empezando con Firebird y con varias dudas... Delphitest Firebird e Interbase 19 28-10-2014 01:27:05
Cambiar color por defecto al seleccionar varias celdas de un TStringGrid JAI_ME Varios 1 05-08-2012 18:58:19
DUDA trabajar con varias sesiones en FireBird JordiP Firebird e Interbase 14 14-06-2010 15:19:02
Cambiar fuente de una o varias entradas de un TDBLookUpListBox JF Sebastian Conexión con bases de datos 0 17-10-2006 20:27:53
Fechas en Firebird Puche Firebird e Interbase 3 27-07-2006 10:09:52


La franja horaria es GMT +2. Ahora son las 13:43:57.


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
Copyright 1996-2007 Club Delphi