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

formatear fecha

Estas en el tema de formatear fecha en el foro de SQL Server en Foros del Web. estoy tratando de formatear una fecha con slashes con el siguiente query select convert(char(12),convert(datetime,fecha_post,103)) from MiTabla pero me arroja este resultado: Dic 14 2005 y ...
  #1 (permalink)  
Antiguo 10/09/2007, 13:54
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Mensaje formatear fecha

estoy tratando de formatear una fecha con slashes con el siguiente query

select convert(char(12),convert(datetime,fecha_post,103)) from MiTabla

pero me arroja este resultado: Dic 14 2005 y deberia ser 14/12/2005


el campo fecha_post es tipo datetime de largo 8

que estoy haciendo mal?
  #2 (permalink)  
Antiguo 10/09/2007, 14:06
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: formatear fecha

Código:
select convert(char(12),fecha_post,103) from MiTabla
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 10/09/2007, 14:16
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Re: formatear fecha

perfecto! gracias Andres!

Aunque ahora lo que no me resulta es el proceso inverso:
SELECT * FROM MiTabla (nolock) fecha_post=convert(datetime,'14/12/2005 15:37:52',103)

wtf?
  #4 (permalink)  
Antiguo 10/09/2007, 14:20
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: formatear fecha

Código:
SELECT * FROM MiTabla (nolock) fecha_post=convert(datetime,'20051214 15:37:52')
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 10/09/2007, 14:23
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Re: formatear fecha

pateame, pero no me arroja ninguna fila :S

SELECT * FROM MiTabla (nolock) WHERE fecha_post=convert(datetime,'10/09/2007 15:37:52')
  #6 (permalink)  
Antiguo 10/09/2007, 14:46
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: formatear fecha

El formato debe ser YYYYMMDD
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #7 (permalink)  
Antiguo 10/09/2007, 14: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
Re: formatear fecha

pcarvajal

Debes considerar que SQL Server, como muchos otros motores de bases de datos, almacena las fechas en formato ANSI, creo que NO deberias preguntar por el igual, si no considerar, tal vez RANGOS de fechas.

Te sugiero que utilices >= y <= para realizar la comparacion

Por ejemplo.

WHERE fecha_post >= convert(datetime,'10/09/2007 15:37:52')
AND fecha_post <= convert(datetime,'10/09/2007 18:37:52')
  #8 (permalink)  
Antiguo 10/09/2007, 15:00
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Re: formatear fecha

gracias a los dos por su ayuda.
como soy porfiado, lo intenté hastá que resultó:

WHERE convert(char(12),fecha_post,103)='10/09/2007'
AND convert(char(12),fecha_post,114)='15:37:51:687'


el truco pasaba por rescatar la hora con formato 114 (cualquier ptro aproximaba las milesimas y por tanto redondeaba) para luego realizar la consulta.

Hechenle una mirada y me dicen que opinan.

Gracias de nuevo
  #9 (permalink)  
Antiguo 10/09/2007, 15:08
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: formatear fecha

Estoy de acuerdo con iislas, solo que en ocasiones se requiere obtener un registro en específico utilizando la fecha en la que se generó. Ahi aplica la busqueda con un =.

Y bueno en realidad en SQL Server 2000 la fecha se almacena internamente como dos enteros de 4 bytes: Los primeros 4 bytes almacenan la cantidad de dias antes o despues de la fecha base (Enero 1, 1900), los otros 4 bytes almacenan la hora del dia como un numero de milisegundos despues de la media noche. El tipo smalldatetime almacena la fecha con menos precision, 2 bytes para la fecha y 2 bytes para la hora.

El formato ansi es la secuencia en la que el motor toma tu parametro para transformarlo en un valor equivalente al almacenado, tomando primero el valor del año, luego el mes y asi sucesivamente, como los formatos con diagonales varian de un idioma a otro (por ejemplo ingles y español) se recomienda utilizar el formato ansi para que no halla problemas cuando se consulten servidores con diferente configuracion de idioma, o bien cuando se modifique el idioma del servidor donde se ejecuta la aplicacion ya desarrollada.



Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #10 (permalink)  
Antiguo 10/09/2007, 15:24
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: formatear fecha

Cita:
Iniciado por pcarvajal Ver Mensaje
gracias a los dos por su ayuda.
como soy porfiado, lo intenté hastá que resultó:

WHERE convert(char(12),fecha_post,103)='10/09/2007'
AND convert(char(12),fecha_post,114)='15:37:51:687'


el truco pasaba por rescatar la hora con formato 114 (cualquier ptro aproximaba las milesimas y por tanto redondeaba) para luego realizar la consulta.

Hechenle una mirada y me dicen que opinan.

Gracias de nuevo

Lo mejor seria que siempre lo manejaras como tipo fecha, cuando haces el select inicial almacenarlo en una variable de tipo fechas y al hacer la consulta de un registro en especifico pasarle el valor tipo fecha obtenido inicialmente.

De esta forma te evitas el andar formateando valores tipo caracter y tu codigo es mucho mas legible y menos propenso a errores...

__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #11 (permalink)  
Antiguo 10/09/2007, 15:55
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
Re: formatear fecha

Ademas de lo que comenta Andres95

Utiliza simpre este formato "YYYYMMDD HH:MM:SS"

Saludos
  #12 (permalink)  
Antiguo 12/09/2007, 07:40
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Re: formatear fecha

excelente, muchas gracias a ambos por sus comentarios y aclaraciones
  #13 (permalink)  
Antiguo 12/09/2007, 09:57
Avatar de ftabilo  
Fecha de Ingreso: junio-2007
Ubicación: En el Pc
Mensajes: 139
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: formatear fecha

Hola, este tema me ha sido de mucha ayuda, es justo lo que estaba buscando.

Gracias.
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 05:00.