Usuario
Formatear fechas

Pregunta
-
Saludos a todos. Tengo un problema que quizas sea tipico pero es un verdadero dolor de cabeza entre desarrolladores:
Tengo una DB SQL Server 2005 en Ingles con compatibilidad 2000 corriendo en un windows server 2003 en ingles configurado regionalmente como yyyy/mm/dd. Con estas caracteristicas corro un sistema aqui en mi servidores locales y corre perfectamente. Pero cuando corro mi sistema apuntando a una base de datos de un servidor con las mismas caracteristicas ubicado en un hosting residente en Mexico me da problemas con los formatos de fecha. A veces me coge yyyy/dd/mm y me hace mal ciertos calculos. La pregunta es como podria evitarme estos problemas sin tener que formatear cada vez ue manejo fechas?
Agradezco todas sus sugerencias
Todas las respuestas
-
¿Has probado convertir las fechas en el lado cliente? Lo que ha continuación coloco, lo utilizo en Microsoft Access
...
Case 135 'datetime
If IsDate(valor) Then
cadena = cadena & Tabla & "." & fld.Name & "= CONVERT(DATETIME,'" & Format(valor, "yymmdd") & "', 103),"
End If
...o
If IsDate(valor) Then
If fld.Precision = 23 Then
cadena = cadena & " cast('" & Format(valor, "yymmdd") & "' as DATETIME)" & ","
Else
cadena = cadena & " cast('" & Format(valor, "hh:mm") & "' as SMALLDATETIME)" & ","
End If
End If...
-
Estimado.
En toda tus sentencias SQL o store procedures inicializa de esta manera:
create proc Nombreproc
as
set dateformat DMY
<Sentencias>
Luego tus parametros del VB pasalos en ese formato DMY
dim fecha as date
fecha =format(fecha ,"DD/MM/YYYY")
no importa la collation de tu SQL o tu configuracion regional.
SI LO TRABAJAS de esta manera te evitaras problemas.saludos
Rolando Lau Project Management- Propuesto como respuesta Rolando Lau miércoles, 26 de enero de 2011 13:57
-
Lo unico que siempre funciona por experiencia contra sql desde vb es pasar todas las fechas yyyy-mm-dd hh:mm:ss en caso de ser fechas largas.
Si tus campos son datetime sql te devuelve yyyymmdd y podes formatearlas desde vb,o en los selects de sql usar el convert(char(10),fecha,103)
-
Primeramente gracias a todos por sus respuestas, se que este tema esta algo trillado pero a mas de uno le trae un dolor de cabeza.
Me olvidaba de decirles que del lado del cliente se formatea las fechas con yyyy/mm/dd; en mi interfaz VB consulto una tabla de parametros y aqui incluyo los formatos de fecha. En lo que yo desarrollo siempre formateo bajo este standard, pero se me presento el problema que acabe de mencionarles anteriormente.
guarracuco, precisamente eso queria evitarme, el preguntar cada vez y darle el formato, cosa que ya estoy haciendo pero sin embargo me da problemas.
Luis Tarza, eso precisamente es mi standard pero me olvide de comentarlo, en sql se usan otros formatos que no recuerdo para fecha corta y hora.
Rolando Lau, el set dateformat me ha parecido algo bastante bueno pero me ha quedado una duda: tu lo seteas al inicio de tu procedimiento y suponiendo que tenga otros SP que se ejecutan en el mismo proceso, debo hacerles el set dateformat a cada uno? otra cosilla: cuando termine mi sentencia no debo hacer otro set dateformat para volver a mi estado original de server? la sentencia es simplemente por esa transaccion?
-