Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Separar fecha y texto de un campo

Estas en el tema de Separar fecha y texto de un campo en el foro de SQL Server en Foros del Web. Hola, Necesito crear un reporte de una tabla.. para esto pensé en crear una vista para obtener el archivo.. pero mi problema es el siguiente: ...
  #1 (permalink)  
Antiguo 23/11/2010, 18:33
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Pregunta Separar fecha y texto de un campo

Hola,

Necesito crear un reporte de una tabla.. para esto pensé en crear una vista para obtener el archivo.. pero mi problema es el siguiente:

Tengo un campo que contiene hora inicio de llamada, texto, fecha de llamada, hora fin de llamada, como nvarchar(255) de la siguiente manera se muestra en un campo:

07:57:43 SMDR 2010/11/22 07:56:58,

Para crear el reporte necesito separar:
la hora inicio de llamada,
el texo,
el año de la fecha
el mes de la fecha
el día de la fecha
la hora fin de la llamada

Esto para hacerlo en la vista y poder obtener el reporte, o bien, desde el insertar el archivo de datos que contiene esta información... que lo haga automáticamente, pero estoy usando un bulk insert de la siguiente manera:

Código SQL:
Ver original
  1. BULK INSERT callsp
  2. FROM '\\ascintranet\SMDR\smdr(backup22-11-2010).csv'
  3. WITH(DATAFILETYPE ='char',
  4. FIELDTERMINATOR =',',
  5. ROWTERMINATOR = '\n',
  6. FIRSTROW = 2
  7. )

¿Que me recomiendan hacer? ¿Separarlo desde cuando se inserta el archivo de cvs o en una vista?

Espero me puedan ayudar a resolver el problema, estuve buscando con depart, substring, tablas temporales pero no es mi mejor solución, etc.. espero sus comentarios, gracias.
  #2 (permalink)  
Antiguo 23/11/2010, 23:46
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Separar fecha y texto de un campo

Definitivamente, para subirlo rapido, asi como esta.

Una vez arriba, entonces con SUBSTRING, debes separar tus datos, consulta CHARINDEX
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 24/11/2010, 13:43
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Separar fecha y texto de un campo

Aún sigo confundida con este tema por más que leo no encuentro como separarlo, porque al parecer las fechas y el texto no lo separa :( no tienes algo más puedo buscar para encontrar la solución?
  #4 (permalink)  
Antiguo 24/11/2010, 14:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Separar fecha y texto de un campo

Inicia

Yo esperaba que vinieras nos mostraras el codigo intentando separar tu cadena, ¿pero ni siquiera eso, un intento?

Te dejo un ejemplo:

Código SQL:
Ver original
  1. DECLARE @texto VARCHAR(50)
  2. SET @texto = '07:57:43 SMDR 2010/11/22 07:56:58'
  3. SELECT SUBSTRING(@texto,1,9) AS HoraInicio,
  4. SUBSTRING(@texto,10,5) AS Mensaje,
  5. SUBSTRING(@texto,15,4) AS [YEAR],
  6. SUBSTRING(@texto,20,2) AS Mes
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 24/11/2010, 14:09
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Separar fecha y texto de un campo

Buenas tardes Inicia:

Qué es lo que te confunde??? por qué no puedes separar tu cadena???

Ya el compañero Iislas te dio la solución y es utilizar SUBSTRING, si la longitud de tu texto siempre es de 4 caracteres bastaría con hacer algo como esto:

Código SQL:
Ver original
  1. DECLARE @campo VARCHAR(50)
  2. SET @campo = '07:57:43 SMDR 2010/11/22 07:56:58'
  3. SELECT
  4. SUBSTRING(@campo, 1, 8) AS hora_inicio,
  5. SUBSTRING(@campo, 10, 4) AS texto,
  6. SUBSTRING(@campo, 15, 4) AS año,
  7. ......
  8. ......
  9. ......
Ahora bien, si la longitud de tu texto puede variar entonces puedes complementar esta consulta utilizando las como te indicó Iislas la función charindex para determinar la posición de los espacios y la función rigth para extraer sólo los caracteres de la derecha de tu cadena.

Saludos.
Leo
  #6 (permalink)  
Antiguo 24/11/2010, 14:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Separar fecha y texto de un campo

ups... Perdón Iislas, contestamos la pregunta al mismo tiempo.

Saludos
Leo.
  #7 (permalink)  
Antiguo 24/11/2010, 14:12
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Separar fecha y texto de un campo

leonardo_josue

Casi nos ponemos de acuerdo en el ejemplo, saludos
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 24/11/2010, 16:13
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Separar fecha y texto de un campo

el problema es que yo estaba haciendo esto:

SELECT
SUBSTRING(@SMDR,1,9) AS HoraInicio,
SUBSTRING(@SMDR,10,5) AS Mensaje,
SUBSTRING(@SMDR,15,4) AS Anio,
SUBSTRING(@SMDR,20,2) AS Mes
FROM callsp


no estaba indicando el tipo de campo :S a la prox pongo mi ejemplo la vdd si se me paso les agradezco mucho su ayuda :)
  #9 (permalink)  
Antiguo 24/11/2010, 20:57
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Separar fecha y texto de un campo

De nada compañera, para eso estamos, saludos.
__________________
MCTS Isaias Islas
  #10 (permalink)  
Antiguo 25/11/2010, 12:23
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Separar fecha y texto de un campo

:s al ejecutar.. la consulta así:

Código SQL:
Ver original
  1. DECLARE @texto nvarchar(MAX)
  2. SELECT @texto = SMDR FROM dbo.Crudo_LlamadasAvaya
  3. SELECT SUBSTRING(@texto,1,9) AS HoraInicio,
  4. SUBSTRING(@texto,10,5) AS Mensaje,
  5. SUBSTRING(@texto,15,4) AS Anio,
  6. SUBSTRING(@texto,20,2) AS Mes,
  7. llamadas,duracion,final
  8. FROM  dbo.Crudo_LlamadasAvaya

Me regresa el mismo valor del primer campo.. es decir declare el campo SMDR para que hiciera todos en mi tabla el dividir, pero si el rpimer campo es '07:57:43 SMDR 2010/11/22 07:56:58' entonces me aparece en las 3000 filas que tengo con los demás datos

¡Porque pasa si estoy declarando variable?
  #11 (permalink)  
Antiguo 25/11/2010, 13:18
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Separar fecha y texto de un campo

Muy sencillo y facil de explicar, todo a base de logica, SIEMPRE te esta asignando el primero o ultimo registro, dependiendo del order by.

Lo que debes hacer, es siempre trabajar con tu campo


Código SQL:
Ver original
  1. SELECT SUBSTRING(SMDR,1,9) AS HoraInicio,
  2. SUBSTRING(SMDR,10,5) AS Mensaje,
  3. SUBSTRING(SMDR,15,4) AS Anio,
  4. SUBSTRING(SMDR,20,2) AS Mes,
  5. llamadas,duracion,final
  6. FROM  dbo.Crudo_LlamadasAvaya
__________________
MCTS Isaias Islas

Etiquetas: fechas, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:59.