2012-06-19 12 views
5

Próbowałem na kilka sposobów, aby odzyskać datetime2(3) odpowiednik z kodu C#, ale na próżno.DateTime.Now w C#, aby uzyskać Datetime2 (3) w typie danych SQL Server

Jeden z nich wygląda następująco.

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

muszę następujący format:

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

Ale z powyższego kodu, mam następujący wynik

6/19/2012 11:15:08 PM 

Kiedy próbowałem następujący sposób

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

to jest rzucanie następującego błędu

Łańcuch nie został rozpoznany jako ważny obiekt DateTime.

muszę datę w formacie datetime2(3) tylko zamiast można zasugerować mi zapisać jako nvarchar. Ale muszę posortować wpisy zgodnie z datetime2 zostały zaktualizowane.

Czy istnieje inny sposób rozwiązania tego problemu?

+0

Może powinieneś dodać przykłady i trochę więcej szczegółów. Jak "przechowujesz" tę datę? Jakiego typu jest kolumna bazy danych? –

+0

Próbujesz zapisać datę i godzinę w kolumnie datetime2 (3) w bazie danych? Jeśli tak, jak to robisz? Z standardowym 'DataSet', typowanym zestawem danych, poleceniem z dynamicznie generowaną instrukcją SQL i wartością złączoną w łańcuchu lub poleceniem z parametrami? –

+0

@ both: Chcę wstawić DateTime.Now do Sql datatype datetime2 (3). Korzystając z Fluent NHibernate chcę go zaimplementować. – viento

Odpowiedz

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 jest typem danych reprezentującym daty i godziny i nie przechowuje informacji o formacie. Milisekundy są zawsze przechowywane w DateTime. Jedynym czasem, w którym musisz podać milisekundy, jest wybór sposobu reprezentowania DateTime jako innego typu, na przykład ciągu.

+0

6/19/2012 11:39:10 PM To właśnie dostałem w rezultacie Kevin. – viento

+1

Kiedy mówisz, że "masz 6/19/2012 11:39:10 PM", gdzie widzisz tę wartość? W debugerze? Konsola? Cokolwiek wyświetla wartość DateTime, stosuje formatowanie. Milisekundy są nadal przechowywane w wartości. –

+0

Ok, rozumiem. Widziałem to w Console. Ale to działało na człowieka. Zostało zapisane w bazie danych. Dzięki. Mógłbym dać +1, ale nie mam wystarczającej liczby punktów. Dzięki i tak. – viento

Powiązane problemy