Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > Firebird e Interbase
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 03/03/2016
KOVNEO KOVNEO is offline
Registrado
NULL
 
Join Date: 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';

Last edited by Casimiro Noteví : 03/03/2016 at 18:30. Reason: Recuerda poner los tags al código fuente
Reply With Quote
  #2  
Old 03/03/2016
RONPABLO's Avatar
[RONPABLO] RONPABLO is offline
Miembro Premium
 
Join Date: Oct 2004
Posts: 1,514
Poder: 23
RONPABLO Va por buen camino
Quote:
Originally Posted by KOVNEO View Post
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í??
Quote:
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"
Reply With Quote
  #3  
Old 03/03/2016
KOVNEO KOVNEO is offline
Registrado
NULL
 
Join Date: 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
Reply With Quote
  #4  
Old 03/03/2016
KOVNEO KOVNEO is offline
Registrado
NULL
 
Join Date: 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';"
Reply With Quote
  #5  
Old 03/03/2016
Lepe's Avatar
[Lepe] Lepe is offline
Miembro Premium
 
Join Date: May 2003
Posts: 7,424
Poder: 31
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.
Reply With Quote
  #6  
Old 04/03/2016
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Quote:
Originally Posted by KOVNEO View Post
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:

Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Empezando con Firebird y con varias dudas... Delphitest Firebird e Interbase 19 28/10/2014 01:27
Cambiar color por defecto al seleccionar varias celdas de un TStringGrid JAI_ME Varios 1 05/08/2012 18:58
DUDA trabajar con varias sesiones en FireBird JordiP Firebird e Interbase 14 14/06/2010 15:19
Cambiar fuente de una o varias entradas de un TDBLookUpListBox JF Sebastian Conexión con bases de datos 0 17/10/2006 20:27
Fechas en Firebird Puche Firebird e Interbase 3 27/07/2006 10:09


All times are GMT +2. The time now is 00:09.


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