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

Convertir fecha

Estas en el tema de Convertir fecha en el foro de SQL Server en Foros del Web. Hola soy muy novato con esto del T-SQL y tengo una pequeña duda... Tengo esta consulta Código: SELECT D.NOMBRE, REPLACE (CONVERT(VARCHAR, A.FECNAC,106), ' ', ' ...
  #1 (permalink)  
Antiguo 03/01/2011, 10:05
davidbrepe
Invitado
 
Mensajes: n/a
Puntos:
Convertir fecha

Hola soy muy novato con esto del T-SQL y tengo una pequeña duda...
Tengo esta consulta
Código:
SELECT D.NOMBRE, REPLACE (CONVERT(VARCHAR, A.FECNAC,106), ' ', ' de ')
FROM DATOS D
y me devuelve por ejemplo 27 de Feb de 1992
lo que quiero es que me devuelva el nombre completo del mes ( 27 de Febrero de 1992)

Alguna idea?

Un saludo!
  #2 (permalink)  
Antiguo 03/01/2011, 11:15
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: Convertir fecha

A menos de que crees tu propia tabla con los nombres completos, no creo que SQL Server te los pueda dar.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 03/01/2011, 15:26
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Convertir fecha

Buenas tardes davidbrepe:

Puedes utilizar la función DATENAME, enviando como parametro MONTH para obtener el nombre del mes

Código SQL:
Ver original
  1. SELECT DATENAME(MONTH, getdate())
  2.  
  3. --> Enero

Si no tienes definido español como lenguaje predeterminado puedes hacer lo siguiente:

Código SQL:
Ver original
  1. DECLARE @fecha datetime
  2. SET @fecha = getdate()
  3. SET LANGUAGE Spanish
  4. SELECT
  5. CAST(DAY(@fecha) AS VARCHAR) + ' de ' + datename(MONTH, @fecha) + ' de ' + CAST(YEAR(@fecha) AS VARCHAR)
  6.  
  7. --> 3 de Enero de 2011

Saludos y espero que te pueda servir de algo la ayuda.
Leo.
  #4 (permalink)  
Antiguo 03/01/2011, 15:35
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: Convertir fecha

Bueno el truco, tks
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 03/01/2011, 16:08
davidbrepe
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Respuesta: Convertir fecha

muchas gracias ;)
Un saludo!!!
  #6 (permalink)  
Antiguo 04/01/2011, 07:22
 
Fecha de Ingreso: enero-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Convertir fecha

Hola gente, ante nada gracias por la ayuda que me puedan aportar!
Les comento que me engancho en este tema porque yo tambien soy novato en sql, y el tema basicamente es el mismo pero busco un resultado diferente.
En mi caso necesito insertar datos que provienen de tipo de datos varchar en una columna que el tipo de dato sera datetime-
Ya de por si cuand hago el select me pincha:

select left(CONVERT(datetime, t2.tmstmp),8) from t2

me tira este error:
Msg 241, Level 16, State 1, Line 4
Conversion failed when converting datetime from character string.

Desde ya gracias a los aportes que puedan darme!
  #7 (permalink)  
Antiguo 04/01/2011, 09:10
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Convertir fecha

Buenos días dos_olivos:

Veo que apenas estás comenzando a utilizar el foro, te comento que si tienes alguna duda particular NO UTILICES UN TEMA ABIERTO PARA EXPRESAR TU PREGUNTA. Lo correcto es que ABRAS UN NUEVO TEMA, pues aunque hay semejanzas en los planteamientos son dos cosas completamente distintas.

Te comento que el estándar que utiliza SQL Server para las fechas es el formato ANSI (yyyymmdd hh:mi:ss), en tu instrucción no especificas ningún formato en el CONVERT, por lo que toma el formato ANSI o la del lenguaje que tengas definido en la base de datos, si alguna cadena no cumple con este formato te aparecerá el error que mencionas. Pongamos algunos ejemplos, supongamos que quieres convertir la fecha 31 de Diciembre de 2010. Puedes hacerlo así:

Código SQL:
Ver original
  1. SELECT CONVERT(datetime, '31/12/2010')
  2. SELECT CONVERT(datetime, '31/12/2010', 103)
  3. SELECT CONVERT(datetime, '20101231')

Si tuvieras definido el idioma inglés en tu Motor de BD el primer select marcaría error, pues el formato de fecha para el idioma inglés es mm/dd/yyyy. En la segunda opción no hay problemas, pues estás enviando como tercer parámetro el estilo 103 (que corresponde a dd/mm/yyyy). En el tercer select estás utilizando justamente el formato ANSI, por lo que no debes tener problemas.

Puedes utilizar la función ISDATE para filtrar aquellas cadenas que no tengan el formato correcto. Investiga algo al respecto y si continuas con problemas lo comentas en el foro (EN UN NUEVO TEMA POR FAVOR).

También puedes checar este artículo, me parece muy completa la forma en que explica el manejo de fechas

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

Saludos
Leo.

Etiquetas: fechas
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 22:33.