我的项目中有一个DataBase,其中Table名为'ProcessData',列名为'Start_At'(Type:DateTime)和'End_At'(Type:DateTime)。
当我尝试在此表中输入新记录时,它会按以下格式输入数据:'YYYY / MM / DD HH:mm',当我真的希望它采用这种格式时:'YYYY / MM / DD HH :mm:ss'(secondes dosen't apper)。
有谁知道为什么,我该怎么办才能解决这个问题?
以下是我使用的代码:
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();
非常感谢
答案 0 :(得分:1)
使用参数化查询,而不是像现在一样使用字符串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数据类型)而不是看起来像日期的字符串。
答案 1 :(得分:0)
我刚刚在SQL Server 2005中试过这个,我知道记录本身包含的秒数。
你可以尝试:
select
Start_At,
convert(varchar(20), Start_At, 120) as Formatted_Start_At
from
ProcessData
并查看Formatted_Start_At是否包含秒值。
如果是这样,您的数据库包含您期望的实际值,因此这只是格式化输出的问题。