передача даты и времени на SQL-сервер с использованием C # - PullRequest
0 голосов
/ 03 февраля 2012

Можете ли вы помочь мне:

Как передать строку String dateAndTime = "02.02.2012, 17:57:00" на сервер SQL с помощью C #?

Я передавал его как строку, но, очевидно, SQL не любит синтаксис. это дает мне ошибку:

Неправильный синтаксис около 5:

Ответы [ 3 ]

6 голосов
/ 03 февраля 2012

Никогда не передавайте даты в виде строки, но используйте правильный тип данных datetime. Ищите команды и параметры вместо создания операторов SQL в коде. Google 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();
        }
    }
}
0 голосов
/ 03 февраля 2012

Вам необходимо конвертировать в DateTime

Используйте это в строке SQL-запроса:

 " Convert(datetime, '" + dateAndTime + ")"

Пример синтаксиса SQL-запроса:

main.received_date > Convert(datetime,'12/28/2011')

Edit1: более полный пример

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();
}

Edit2:

Может быть, лучше передать dateTime в качестве истинного DateTime, а затем использовать dateTime.ToString(), чтобы убедиться, что передана правильная переменная.

0 голосов
/ 03 февраля 2012

В вашем вопросе не так много контекста, но я думаю, что это то, что вы ищете:

DateTime dateAndTime = DateTime.Parse("2/2/2012 5:57:00 pm");
//Do something with dateAndTime.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...