使用C#将日期和时间传递给SQL服务器
本文关键字:SQL 服务器 时间 日期 使用 | 更新日期: 2023-09-27 18:22:13
你能帮我吗:
如何使用C#将StringdateAndTime="2/2/2015:57:00 pm"传递到SQL server?
我把它作为字符串传递,但显然SQL不喜欢这种语法。它给了我一个错误:
5:附近的语法错误
不要将日期作为字符串传递,而是使用正确的日期时间数据类型。查找命令和参数,而不是在代码中创建SQL语句。谷歌SqlCommand
编辑:我昨天在打电话。这里有一个更好的答案:
int GetNumberOfItemsAfterDate(DateTime dateInput) {
// Create a sql statement with a parameter (@FirstDate)
string sql = @"SELECT Count(*)
FROM table
WHERE table.date >= @FirstDate";
// Create a sql connection
// Always use the using statement for this
using (var connection = new SqlConnection(connectionString)) {
// Create a sql command
// Always use the using statement for this
using (var command = new SqlCommand(sql, connection)) {
// Pass the dateinput argument to the command, and let
// the .NET Framework handle the conversion properly!
command.Parameters.Add(new SqlCommand("FirstDate", dateInput));
// No need for calling .Close() or .Dispose() - the using
// statements handle that for us
return (int)command.ExecuteScalar();
}
}
}
你的问题没有太多上下文,但我认为这可能是你想要的:
DateTime dateAndTime = DateTime.Parse("2/2/2012 5:57:00 pm");
//Do something with dateAndTime.
祝你好运!
您需要转换为DateTime
在SQL查询字符串中使用此字符串:
" Convert(datetime, '" + dateAndTime + ")"
SQL查询语法示例:
main.received_date > Convert(datetime,'12/28/2011')
第1版:更完整的示例
void int DatabaseQuery(string dateInput)
{
query = @"
SELECT rank=Count(*)
FROM table
WHERE table.date Convert(datetime,'" + dateInput + "')"
DbConnection cn = some Database connection
cn.Open();
DbCommand cmd = cn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
var reason = cmd.ExecuteScalar();
if (cn.State == ConnectionState.Open)
{
cn.Close();
}
return reason.ToInt();
}
第2版:
最好将dateTime作为真正的DateTime
传递,然后使用dateTime.ToString()
来确保传递正确的变量。