![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problemas con CAST y campos tipo DATE
Buenos días, llevo un buen rato buscando en el foro y no encuentro hilo que me ayude, así que lanzo este nuevo para ver si me pueden ayudar...
Tengo en mi aplicación una exportación a TXT desde una pantalla que ejecuta sentencias SQL, la peculiaridad es que esta exportación mediante "CAST" mantiene el tamaño de los campos y me es muy útil para implementar normas bancarias, exportaciones a programas de contabilidad, etc... La cuestión es, tengo que realizar una exportación a una aplicación contable, y me estan dando problemas los campos tipo fecha. Necesito hacerlo con un CAST ... as VARCHAR(x), ya que mi aplicación reconoce el "largo" del campo (x) y lo rellena con vacíos para mantener la estructura que me solicitan. Así pues si tengo en mi base de datos Firebird una fecha almacenada como 19/01/2007 y hago en mi consulta un CAST (FECHA AS VARCHAR(10)) AS FECHA firebird me devuelve 19-JAN-200 ni tan siquiera me muestra completo el año ya que el tamaño requerido es 10 y en el mes usa 3 caracteres. El formato que busco es el mismo que muestra firebird, es decir 19/01/2007 pero con cast, substr y alguna otra función más me ha sido imposible de obtener. Agradecería cualquier ayuda! ![]() |
#2
|
||||
|
||||
Hola.
Firebird no tiene ningún formato, cuando ves que te muestra 19/01/2007 eso es porqué este es el formato de fecha que tienes definido en la configuración regional de tu Windows. Utiliza esta sentencia para pasar al formato que quieres. select substring(100 + extract(day from FECHA) from 2 for 2) || '/' || substring(100 + extract(month from FECHA) from 2 for 2) || '/' || extract(year from FECHA) from TABLA Es un poco largo pero funciona perfectamente, y no conozco ninguna forma mejor de hacerla (quizás otro compañero la sepa). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
||||
|
||||
Por cierto, si te preguntas porqué sumo 100 a los días y meses y después lo corto con un SUBSTRING, eso es para que me quede en este formato :
12/03/2010 También podrías haber usado select extract(day from FECHA) || '/' || extract(month from FECHA) || '/' || extract(year from FECHA) from TABLA Es más sencillo, pero habría quedado : 12/3/2010 Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#4
|
|||
|
|||
Eres Muuuuuuuuuuuuuuuuuuuuuy Grande!!
Muchas gracias! Lo solucionaste! Jeje Gracias de nuevo!!!!!!!! |
#5
|
|||
|
|||
Añadiendo el pertinente CAST para que mi aplicación "reserve" el tamaño claro!
XD Thanks de nuevo! |
#6
|
|||
|
|||
Por cierto... Adjunto una segunda opción que me ha pasado un compañero sabedor de mi problema...
select cast(DateToStr(fecha,'%d/%m/%Y') as varchar(10)) from tabla También funciona y es mas "light", jejeje. Gracias a los 2 de todos modos. |
#7
|
||||
|
||||
Gracias por compartirlo,
No conocía esta función DateToStr. En mi Firebird 2.0 no funciona, supongo que la han añadido posteriormente. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problemas de agrupamientos con campos tipo date | GustavoCruz | Conexión con bases de datos | 5 | 11-12-2006 17:36:57 |
problemas con campos Tipo Blob | morfeo21 | Firebird e Interbase | 0 | 18-07-2005 18:06:54 |
Problemas con campos tipo TEXT | bustio | Conexión con bases de datos | 3 | 08-02-2005 16:40:50 |
Problema con IBTable y campos de tipo date y time | erickperez6 | Conexión con bases de datos | 4 | 14-02-2004 03:22:22 |
Problemas con Query campo tipo Date "Oracle" | Marrano | Oracle | 4 | 27-05-2003 12:09:56 |
![]() |
|