使用C#将日期和时间传递给SQL服务器

本文关键字:SQL 服务器 时间 日期 使用 | 更新日期: 2023-09-27 18:22:13

你能帮我吗:

如何使用C#将StringdateAndTime="2/2/2015:57:00 pm"传递到SQL server?

我把它作为字符串传递,但显然SQL不喜欢这种语法。它给了我一个错误:

5:附近的语法错误

使用C#将日期和时间传递给SQL服务器

不要将日期作为字符串传递,而是使用正确的日期时间数据类型。查找命令和参数,而不是在代码中创建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()来确保传递正确的变量。