Sui*_*eep 0 c# sql sql-server datetime stored-procedures
这可能听起来很容易,但我已经尝试了好几次却无法得到我想要的东西.
我有一个存储过程,其输入DATETIME类型.我通过提供硬编码字符串确保存储过程正常工作N'2012-12-31 16:45:00'.
现在我想用C#中相同的输入值执行相同的存储过程.我该如何指定值Datetime?
限制更新:不允许参数化SQL
(在添加对参数化SQL的限制之前编写的答案.)
我该如何指定Datetime的值?
使用参数化SQL,就像其他值一样.
using (SqlCommand command = new SqlCommand("StoredProcName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@Foo", SqlDbType.DateTime).Value =
new DateTime(2012, 12, 31, 16, 45, 0);
// Execute here
}
Run Code Online (Sandbox Code Playgroud)
不要试图找到合适的字符串形式.尽可能避免字符串转换.虽然我不会过于厌恶在直接的SQL语句中包含硬编码的字符串和数值,而且它们非常明显,我肯定会使用任何日期/时间值的参数来避免转换问题.(我会使用任何可能需要转义的字符串的参数......)