我正在将格式化的datetime变量传递给SQL Server。我需要将日期与时间连接起来,因为它们来自2个不同的控件。代码似乎工作正常,两个字符串一旦放在一起,就被解析为DateTime。
问题在于,当它升级到SQL Server时,时间部分会丢失,并且列显示yyyy-mm-dd hh:mm:ss.fff
为2012-09-03 00:00:00.000
而不是2012-09-03-12 1:23:45:678
(例如)。
这是我的代码,为了测试我用硬编码变量替换了时间,而objInfo.SemesterEnrollStart
是DateTime
变量。此外,控件dpEnrollStart
是DatePicker
。
DateTime semDate = Convert.ToDateTime(dpEnrollStart.SelectedDate);
string semTime = "12:34";
DateTime dtp = DateTime.ParseExact(semDate.ToShortDateString() + " " + semTime, "MM/dd/yyyy hh:mm", null);
objInfo.SemesterEnrollStart = dtp;
非常感谢!
编辑: 所以,这是我用来调用存储过程的c#:
objInfo.SemesterQuarter = ddl_SemQuarter.SelectedValue;
objInfo.SemesterYear = ddl_SemYear.SelectedValue;
objInfo.SemesterStart = Convert.ToDateTime(dpSemStart.SelectedDate);
objInfo.SemesterEnd = Convert.ToDateTime(dpSemEnd.SelectedDate);
DateTime semDate = Convert.ToDateTime(dpEnrollStart.SelectedDate);
string semTime = "12:34:00.000";
objInfo.SemesterEnrollStart = DateTime.ParseExact(semDate.ToShortDateString() + " " + semTime, "MM/dd/yyyy HH:mm:ss.fff", null);
objInfo.SemesterEnrollEnd = Convert.ToDateTime(dpEnrollEnd.SelectedDate);
objInfo.PriorityRegDate = Convert.ToDateTime(dpPriRegDate.SelectedDate);
objInfo.AgeCutoffDate = Convert.ToDateTime(dpAgeCutoffDate.SelectedDate);
lblTSMessage.Text = objInfo.SemesterEnrollStart.ToString();
objManager.AddNewSemester(objInfo);
答案 0 :(得分:1)
问题在于您在ParseExact中使用的格式:
MM/dd/yyyy hh:mm
因此,您故意丢弃秒和毫秒部分。
相反,您需要使用以下代码解析日期:yyyy-MM-dd HH:mm:ss.fff
但是您需要在semTime变量或{{{}中捕获seconds
(ss)和milliseconds
(fff) 1}}方法将废话。
一个例子:
ParseExact