Сравните Datetime.now с датой в таблице SQL - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь написать код на c #, который сравнил бы дату, которая у меня есть в таблице SQL (таблица: элементы, столбец "endTime"), с datetime.now и результатом - отображение изображения.

пример:

, если время в таблице столбцов раньше, чем сейчас .. поэтому отобразите в aspx image1, в противном случае отобразите image2.

Я пытался сделать это командой sql:

    private DateTime endTime(out int lastDate)
{
    SqlConnection connection = new SqlConnection("Data Source=******;Initial Catalog=******;User ID=*****;Integrated Security=False;");
    string commandtext = "SELECT TOP(1) endTime FROM items";
    SqlCommand command = new SqlCommand(commandtext, connection);
    connection.Open();
    SqlCommand command2 = new SqlCommand(commandtext, connection);
    lastDate = (int)command2.ExecuteScalar(); 
    connection.Close();
    return ...
}

но у меня проблема с возвратом и выполнением метода ...:

            int d; 
        Console.WriteLine(endTime(out d));
        if (d < DateTime.Now)
        {
            image1.Visible = true;

        }
        else
        {
            image2.Visible = true;
        }
        Console.WriteLine(d);

но у меня есть ошибка, но я верю, что она пришла из возврата.

Ответы [ 4 ]

2 голосов
/ 11 сентября 2012

Вместо if (d < DateTime.Now) используйте это: if (d < DateTime.Now.Date)

0 голосов
/ 30 июня 2011
  1. Что возвращает ваш SQL-запрос (я полагаю, отметьте галочки)?
  2. Как конвертировать int в DateTime, покажите код, пожалуйста
  3. Включите SqlConnection вusing() блок, как показано ниже:
using (SqlConnection connection = new SqlConnection(...))
0 голосов
/ 30 июня 2011

Я бы предложил разрешить базе данных выполнять сравнение дат прямо в sql.

SYSDATE можно сравнить с EndTime прямо в запросе, и вы можете либо не возвращать строки, которые не совпадают (что позволяетобрабатывать каждую строку в результирующем наборе одинаково) или вы проверяете простое значение в возвращаемом наборе, чтобы увидеть, находится ли время в правильном периоде.

0 голосов
/ 30 июня 2011

Разве вы не должны использовать DateTime из вашего запроса, а не int? Кроме того, трассировка стека / отладчик должны дать вам номер строки исключения. Вы можете опубликовать трассировку стека?

...