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

Pasar valor de nvarchar a datetime

Estas en el tema de Pasar valor de nvarchar a datetime en el foro de SQL Server en Foros del Web. Hola a todos! Tengo un campo llamado fecha que es un nvarchar de 255 y contiene la siguiente información (os pongo un ejemplo de un ...
  #1 (permalink)  
Antiguo 01/09/2010, 04:42
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 5 meses
Puntos: 2
Pasar valor de nvarchar a datetime

Hola a todos!

Tengo un campo llamado fecha que es un nvarchar de 255 y contiene la siguiente información (os pongo un ejemplo de un registro)

2009-07-14 05:50:15

Quería que este campo fuera datetime y tuviera el formato

14/07/2009 05:50:15

¿Alguíen podría decirme cómo hacerlo?

(No puedo hacerlo uno a uno porque son muchos registros los que se han cargado)

GRACIAS!!!
  #2 (permalink)  
Antiguo 01/09/2010, 06:47
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Pasar valor de nvarchar a datetime

Solucionado:


CONVERT(varchar, CONVERT(datetime, substring(fecha,1,10), 101), 103) + substring(fecha,11,20)
  #3 (permalink)  
Antiguo 01/09/2010, 13:59
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Pasar valor de nvarchar a datetime

¿Porque complicarse las cosas y no declararlo DATETIME desde un inicio, sabiendo que iba a llevar este tipo de dato?
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 01/09/2010, 14:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Pasar valor de nvarchar a datetime

Cita:
Iniciado por iislas Ver Mensaje
¿Porque complicarse las cosas y no declararlo DATETIME desde un inicio, sabiendo que iba a llevar este tipo de dato?
Lo que pasa es que a los DBA's les encanta complicarle el trabajo a los programadores jejeje.

Solo una recomendación para MiguelFT, hace tiempo tuve bastantes problemas por situaciones como al que comentas, "heredé" una base de datos y algunas tablas manejaban la fecha como mencionas. Ahórrate tiempo y esfuerzo y si puedes cambia la estructura de tus tablas los campos a datetime, como lo menciona iislas, pero si por lógica de negocios esto no es factible, entonces siempre realiza la comparación isdate antes de hacer las conversiones porque si existe algún registro que no cumpla con el formato especificado te "truena" toda la consulta.

Código SQL:
Ver original
  1. SELECT isdate('2009-07-14 05:50:15') -- 1
  2. SELECT isdate('2009-02-30 05:50:15') -- 0
  3. SELECT isdate('2009-07-14 25:50:15') -- 0

Saludos
Leo
  #5 (permalink)  
Antiguo 02/09/2010, 07:31
Avatar de abel_c_b  
Fecha de Ingreso: junio-2008
Mensajes: 103
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Pasar valor de nvarchar a datetime

Cita:
Iniciado por leonardo_josue Ver Mensaje
Lo que pasa es que a los DBA's les encanta complicarle el trabajo a los programadores jejeje.

Solo una recomendación para MiguelFT, hace tiempo tuve bastantes problemas por situaciones como al que comentas, "heredé" una base de datos y algunas tablas manejaban la fecha como mencionas. Ahórrate tiempo y esfuerzo y si puedes cambia la estructura de tus tablas los campos a datetime, como lo menciona iislas, pero si por lógica de negocios esto no es factible, entonces siempre realiza la comparación isdate antes de hacer las conversiones porque si existe algún registro que no cumpla con el formato especificado te "truena" toda la consulta.

Código SQL:
Ver original
  1. SELECT isdate('2009-07-14 05:50:15') -- 1
  2. SELECT isdate('2009-02-30 05:50:15') -- 0
  3. SELECT isdate('2009-07-14 25:50:15') -- 0

Saludos
Leo

Hola leo, al ejecutar la consulta mensionada por ti, todas las respuestas dan 0, ninguna devuelve 1

Saludos.......
  #6 (permalink)  
Antiguo 02/09/2010, 09:04
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Pasar valor de nvarchar a datetime

Hola abel_c_b, me extraña que comentes que todas las consultas regresan 0, acabo de ejecutarlas en mi servidor de bd y tal como lo comento en mi post la primera de ellas regresa un 1.

Justamente este se el tipo de problemas con los que me refiero que hay que tener cuidado cuando se manejen fechas. Es recomendable utilizar siempre el formato ANSI estándar (YYYYMMDD HH:mm:ss). Les dejo un artículo de Maximiliano Acotto el cual me parece muy interesante, en donde se explica los beneficios de trabajar con este formato de fecha de manera bastante sencilla.

http://www.mug.org.ar/SQL/ArticSQL/240.aspx

Saludos.
Leo.

Etiquetas: convert, datetima, nvarchar, sql
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 18:31.