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

Covertir texto a fecha con hora , minutos y segundos

Estas en el tema de Covertir texto a fecha con hora , minutos y segundos en el foro de SQL Server en Foros del Web. Hola, Estoy tratando de convertir esta fecha: 28 Abr 2017 15:37:20:140 al formato: 2017-04-28 15:37:20.140 y me entrega este error: Msg 241, Level 16, State ...
  #1 (permalink)  
Antiguo 14/06/2018, 13:52
 
Fecha de Ingreso: noviembre-2007
Mensajes: 67
Antigüedad: 10 años, 10 meses
Puntos: 0
Covertir texto a fecha con hora , minutos y segundos

Hola,
Estoy tratando de convertir esta fecha: 28 Abr 2017 15:37:20:140 al formato: 2017-04-28 15:37:20.140

y me entrega este error: Msg 241, Level 16, State 1, Line 4
Conversion failed when converting date and/or time from character string.

lo estoy haciendo así: SELECT convert(datetime,'28 Abr 2017 15:37:20:140',3) from tabla

ya que se debe reemplazar el mes Abr por Apr

como puedo convertir directamente 28 Abr 2017 15:37:20:140 al formato: 2017-04-28 15:37:20.140, ya que tengo miles de registros en este formato y no puedo estar modificando el mes manualmente a cada rato.

Gracias por su ayuda amigos.
  #2 (permalink)  
Antiguo 14/06/2018, 20:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.308
Antigüedad: 12 años, 2 meses
Puntos: 760
Respuesta: Covertir texto a fecha con hora , minutos y segundos

quizas esto te ayude:

http://www.sql-server-helper.com/tips/date-formats.aspx

Código SQL:
Ver original
  1. SELECT CONVERT(datetime,REPLACE('28 Abr 2017 15:37:20:140','Abr','Apr'),3)

Ahora como hacer todos los meses, pues podrias crear un query con cases algo asi:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. fecha nvarchar(200)
  4. )
  5.  
  6. INSERT INTO #temp VALUES ('28 Abr 2017 15:37:20:140')
  7. INSERT INTO #temp VALUES ('28 Mar 2017 15:37:20:140')
  8. INSERT INTO #temp VALUES ('28 May 2017 15:37:20:140')
  9. INSERT INTO #temp VALUES ('28 Ene 2017 15:37:20:140')
  10.  
  11.  
  12. SELECT CONVERT(datetime,fecha,3) FROM(
  13. SELECT
  14. CASE
  15. WHEN charindex('Abr',fecha,1)>=1 THEN REPLACE(fecha,'Abr','Apr')
  16. WHEN charindex('Ene',fecha,1)>=1 THEN REPLACE(fecha,'Ene','Jan')
  17. ELSE fecha END AS fecha
  18.  FROM #temp
  19. ) AS t2
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 14/06/2018 a las 20:25
  #3 (permalink)  
Antiguo 18/06/2018, 13:09
 
Fecha de Ingreso: noviembre-2007
Mensajes: 67
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Covertir texto a fecha con hora , minutos y segundos

Muchas gracias, me ha sido de mucha ayuda.



La zona horaria es GMT -6. Ahora son las 14:15.