C# SqlServer VisualStudio C中的日期时间#

C# SqlServer VisualStudio C中的日期时间#,c#,sql-server,datetime-format,C#,Sql Server,Datetime Format,我的项目中有一个数据库,表名为'ProcessData',列名为'Start_At'(类型:DateTime)和'End_At'(类型:DateTime)。 当我尝试在此表中输入一条新记录时,它会以以下格式输入数据:“YYYY/MM/DD HH:MM”,而我实际希望它采用该格式:“YYYY/MM/DD HH:MM:ss”(秒数不出现)。 有人知道为什么吗?我应该怎么做才能解决这个问题 以下是我使用的代码: con = new SqlConnection("...."); String start

我的项目中有一个数据库,表名为'ProcessData',列名为'Start_At'(类型:DateTime)和'End_At'(类型:DateTime)。
当我尝试在此表中输入一条新记录时,它会以以下格式输入数据:“YYYY/MM/DD HH:MM”,而我实际希望它采用该格式:“YYYY/MM/DD HH:MM:ss”(秒数不出现)。
有人知道为什么吗?我应该怎么做才能解决这个问题

以下是我使用的代码:

con = new SqlConnection("....");
String startAt = "20100413 11:05:28";
String endAt = "20100414 11:05:28";
...
con.Open();//open the connection, in order to get access to the database
SqlCommand command = new SqlCommand("insert into ProcessData (Start_At, End_At) values('" +  startAt + "','" + endAt + "')", con);
command.ExecuteNonQuery();//execute the 'insert' query.
con.Close();

非常感谢

使用参数化查询,而不是像现在这样使用字符串concat构建查询

SqlCommand command = new SqlCommand();
command.Connection = someConnectionObj;
command.CommandText = "INSERT INTO Sometable (datecolumn) VALUES (@p_date)";
command.Parameters.Add ("@p_date", SqlDbType.DateTime).Value = someDate;
command.ExecuteNonQuery();

另外,请使用真实日期(DateTime数据类型)而不是看起来像日期的字符串。

我刚刚在SQL Server 2005中尝试过这一点,我发现记录本身确实包含秒数

你能试试吗

select 
    Start_At,
    convert(varchar(20), Start_At, 120) as Formatted_Start_At
from 
    ProcessData
并查看格式化的_Start_At是否包含秒值


如果是这样,您的数据库包含您期望的实际值,因此这只是一个格式化输出的问题。

感谢您的快速回答,我尝试了您的建议,但是仍然不起作用。关于您所说的使用DateTime而不是String:我第一次尝试了这个方法,但后来我得到了以下异常:“System.Data.SqlClient.SqlException:将char数据类型转换为DateTime数据类型导致DateTime值超出范围。该语句已终止。”,