candijen Ответов: 1

Как сравнить значение даты и времени в базе данных с текущей датой?


Я хочу сравнить текущую дату со значением из базы данных и выполнить функцию кнопки включения и кнопки отключения. Как мне это сделать?

Вот фрагмент моего кода

String strConnString = ConfigurationManager.ConnectionStrings["facultylogConnectionString"].ConnectionString;
        String strQuery = "Select from Deadline (Date) values (@Date)";
        SqlConnection con = new SqlConnection(strConnString);
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = strQuery;
        cmd.Parameters.AddWithValue("@Date", DateTime.Now);
        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();



Я могу ввести дату и время но теперь я хочу получить его и сравнить с текущей датой и если дата прошла 4 дня с текущей даты я хочу отключить кнопку и если она не прошла 4 дня то я хочу чтобы кнопка была доступна

Что я уже пробовал:

Пожалуйста, помогите мне сравнить текущую дату со значением из базы данных и выполнить включение кнопки или отключение кнопки начиная с 4 дней с момента нажатия другой кнопки на другой странице.

1 Ответов

Рейтинг:
0

OriginalGriff

Вы не указываете никаких столбцов в операторе SELECT, что означает, что он выдаст исключение синтаксической ошибки SQL при попытке его запуска.
Вы также не должны вызывать столбцы базы данных так же, как ключевые слова SQL: дата-это тип в SQL, а не имя столбца!
Кроме того, вам нужно либо использовать ExecuteReader, заполнить DataAdapter, либо использовать ExecuteScalar для возврата значения, а не ExecuteNonQuery - что специально предназначено для команд, которые не возвращают табличные данные, такие как INSERT или UPDATE.
Я бы также предложил, чтобы вместо хранения даты вставки в БД вы хранили дату истечения срока действия в столбце ExpiryDate - установите его на текущую дату плюс четыре дня, когда вы вставляете строку.

Тогда попробуй:

SELECT COUNT(ExpiryDate) FROM DeadLine WHERE ExpiryDate >= @DATE
как ваши команды SQL с помощью executescalar возвращает количество совпадающих строк. Если он равен нулю, то ничего не истекло.