2012-06-19 27 views
5

He intentado varias formas de recuperar datetime2(3) equivalente del código C# pero en vano.DateTime.Now en C# para producir Datetime2 (3) en el tipo de datos SQL Server

Uno de ellos es el siguiente.

DateTime dt = DateTime.Now.AddMilliseconds(DateTime.Now.Millisecond); 

necesito el siguiente formato:

YYYY-MM-DD HH:MM:SS.FFF 

Pero en el código anterior, que tiene el siguiente resultado

6/19/2012 11:15:08 PM 

Cuando probé la siguiente manera,

string myTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"); 
DateTime dd = Convert.ToDateTime(myTime); 

está arrojando el siguiente error

Cadena no reconocida como fecha y hora válida.

necesito la fecha en formato datetime2(3) sólo que en lugar se puede sugerir que salve como nvarchar. Pero necesito ordenar las entradas según el datetime2 que fueron actualizadas.

¿Hay alguna otra manera de solucionar esto?

+0

Tal vez deba agregar algunos ejemplos y más detalles. ¿Cómo "almacenas" esa fecha? ¿Qué tipo es la columna de la base de datos? –

+0

¿Está tratando de guardar la fecha y la hora en una columna datetime2 (3) en la base de datos? Si es así, ¿cómo lo estás haciendo? Con un 'DataSet' estándar, un conjunto de datos tipeados, un comando con una declaración SQL generada dinámicamente y el valor concatenado en la cadena, o un comando con parámetros? –

+0

@ both: deseo insertar DateTime.Now en el tipo de datos Sql de datetime2 (3). Al usar Fluent NHibernate, quiero implementarlo. – viento

Respuesta

14
var format = "yyyy-MM-dd HH:mm:ss:fff"; 
var stringDate = DateTime.Now.ToString(format); 
var convertedBack = DateTime.ParseExact(stringDate, format, CultureInfo.InvariantCulture); 

DateTime es un tipo de datos que representa fechas y horas y no lo hace la información formato de tienda. Los milisegundos siempre se almacenan en DateTime. La única vez que necesita especificar milisegundos es cuando elige cómo representar DateTime como otro tipo, como una cadena.

+0

6/19/2012 11:39:10 PM Esto es lo que obtuve como resultado Kevin. – viento

+1

Cuando dices que tienes "19/6/2012 11:39:10 PM", ¿dónde ves ese valor? En el depurador? ¿Consola? Lo que está mostrando el valor de DateTime es aplicar el formato. Los milisegundos todavía se almacenan en el valor. –

+0

Ok, entendí el punto. Lo he visto en la consola. Pero funcionó el hombre. Se guardó en la Base de datos. Gracias. Podría haberte dado +1 pero no tengo suficientes puntos. Gracias de cualquier manera. – viento

Cuestiones relacionadas