Pregunta

He encontrado una pregunta similar en el desbordamiento de pila, pero en realidad no responder a la pregunta que tengo.Debo asegurarme de que mi asp.net aplicación de formato de fecha dd/mm/aaaa el mismo que el de mi SQL Server 2005.

¿Cómo puedo verificar la fecha de la cultura (si eso es lo que se llama) del servidor coincide con cómo he programado mi aplicación?Son no específicos de la base de datos de configuración y la configuración del sistema operativo?Es específicos de la tabla?No quiero a la transposición de mis días y de los meses.

gracias

¿Fue útil?

Solución

Cuando usted consigue un DateTime de la base de datos, debe estar en un no-cultivadas formato (como el objeto DateTime, basado en el número de pasos desde una fecha determinada).Es sólo cuando se va a convertir ese valor en una cadena de caracteres que usted necesita para estar preocupados con la cultura.En esos casos, puede utilizar yourDateTimeValue.ToString("dd/MM/aaaa", CultureInfo.InvariantCulture) para asegurarse de que la información que se muestra correctamente.

Otros consejos

Creo que si utiliza SqlParameters ADO.NET se encargará del resto y no tiene que preocuparse por ello.Además, es bueno para la defensa contra los ataques de Inyección SQL demasiado!:)

** Cuidado porque en SQL columnas DateTime no los aceptan y su valor mínimo es 1/1/1753 tiempo .net DateTimes no los aceptan con valores mínimos de 1/1/0001.**

Si usted está tirando de los datos de una verdadera columna DateTime, por defecto siempre estará en el mismo formato estándar.Para guardar los datos en la columna, es posible que desee especificar el SqlDbType.DateTime en el parámetro.

me arrancó esta fuera de http://bytes.com/forum/thread767920.html :

com.Los parámetros.Add("@adate", SqlDbType.DateTime).Valor = DateTime.Ahora;

Bien, si usted mantiene campos de fecha y hora en la DB no debe preocuparse por ello.

Como el tiempo que se mantienen las fechas de aplicación inflexible de tipos (DateTime variables) y envíe las fechas a través de declaraciones preparadas con DBParameter/SqlParameter tu DB tomará como es.

Si las cadenas se utilizan para mantener las fechas en el código, algunos moldes asegúrese de enviar los valores de la derecha:

string sqlCmd = @"SELECT *
   FROM MyTable
   WHERE MyDateField = CONVERT(datetime, '{0}', 101)";

// assuming myDateString is a string with a date in the local format
sqlCmd = string.Format(sqlCmd,
    Convert.ToDateTime(myDateString).ToString("yyyyMMdd"));

(el código es feo, pero es de esperar que se obtiene el punto a través)

Como otros han mencionado, usted debe ACEPTAR tan lejos como el almacenamiento de datetimes culturalmente.Lo que yo recomiendo es que usted almacene todos los de su época como estándar de la hora UTC.En SQL Server 2005 y mayores que no hay manera de almacenar la información de zona horaria, pero si todo se almacena en tiempo universal, usted debería estar bien porque el tiempo se puede convertir a la hora local más adelante.

SQL Server 2008 tiene algunos tipos de datos que son conscientes de zonas de tiempo, y si usted está usando .NET 3.5 hay herramientas para ayudar con la zona horaria de manejo de las conversiones.

Definitivamente mantener los tiempos en formato universal.Esto hará un mundo de diferencia si usted tiene que trabajar en varias zonas horarias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top