Проверьте, прошел ли 1 час из строки столбца SQL Server Datetime C#

Я пытаюсь проверить, прошел ли 1 час из строки Datetime, которая у меня есть в базе данных SQL Server. Я попробовал этот код, но он не сработал или я не понял его правильно.

Я пытаюсь взять значение столбца Datetime и проверить, прошел ли 1 час от TimeDate.Now.

Вот мой код:

using (var GetLastPost = new SqlCommand("SELECT PostDate FROM Accs2 WHERE Username LIKE @user1", con))
{
    GetLastPost.Parameters.AddWithValue("@user1", ecid);

    using (var LastReader = await GetLastPost.ExecuteReaderAsync())
    {
        if (!LastReader.HasRows || !LastReader.Read())
        {
        }
        else
        {
            DateTime k = Convert.ToDateTime(LastReader["PostDate"].ToString());

            if (k > DateTime.Now)
            {
                MessageBox.Show("Your Money is in the Box");
            }
            else
            {
                MessageBox.Show("1 Hour Not Passed yet");
                con.Close();
            }
        }
    }
}
Это не сработало - очень мало информации для продолжения. Что не сработало? Как это не сработало? Когда вы отлаживаете это, какое значение принимает k?
Sach 04.07.2018 00:16

Как вы думаете, что делает k > DateTime.Now?

Federico Dipuma 04.07.2018 00:16

k - значение coulmn из типа DateTime, которое у меня есть в моей таблице, что я пытаюсь сделать, это проверить, прошло ли это значение coulmn (PostDate) как пройденное / coparte через 1 час от Datetime. Теперь мне извините за мой плохой английский

Avnego 04.07.2018 00:20

Какое окно сообщения отображается с вашим текущим кодом?

Chetan Ranpariya 04.07.2018 00:37

@ChetanRanpariya, я получаю «Ваши деньги в коробке», но когда я проверяю строку базы данных и копирую с моими часами, это неверно ... и должен возвращать «1 час еще не прошел», что я хочу получить, если час прошло, затем поставил и вернул подождите еще 1 час, как какой-то цикл, который можно выполнить 1 раз в час

Avnego 04.07.2018 00:44

Вы отлаживали код? Какую ценность вы получаете от k? Вы также можете поделиться примером значения PostDate? (k > DateTime.Now) никогда не будет правдой, если у вас есть старая дата в базе данных. Итак, либо у вас неправильные данные в db, либо k имеет неправильное значение. if (k.AddHours(1) > DateTime.Now) - правильный чек

Chetan Ranpariya 04.07.2018 00:49

Какой тип PostDate в базе данных?

mjwills 04.07.2018 01:14

@mjwills тип - DateTime Type, а текст, который у меня есть сейчас, - это на этот раз жало 07/03/2018 21:49:59 (время UTCnow)

Avnego 04.07.2018 10:01

@mjwills, я думаю, я не очень хорошо объяснил себя, что я хочу сделать, это когда пользователь пытается получить ящик, он может взять этот ящик 1 раз в час, поэтому, когда он взял ящик, я хочу вставить в базу данных пользователя PostDate новое дату и время, которое пользователь нужно подождать еще 1 час, и снова и снова вот так

Avnego 04.07.2018 10:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
9
143
1

Ответы 1

Простой метод будет примерно таким:

public bool HasAnHourPassed(DateTime compareTime)
{
    var timePassed = DateTime.Now - compareTime;
    return timePassed.TotalHours > 1;
}

Еще проще и, вероятно, лучше просто сделать это в самой команде SQL: SELECT PostDate from Accs2 where Username like @user1 AND DATEDIFF(hour,SYSDATETIME(),PostDate) > 1

dodexahedron 04.07.2018 00:29

извините, но я не понял, как вставить эту строку в свой код, моя цель - если время, прошедшее msgbox ("деньги в коробке"), если время не прошло msgbox ("только": timePassed минут осталось до следующего окна)

Avnego 04.07.2018 00:29

@dodexahedron К сожалению, предполагает, окно SQL и окно приложения имеют синхронизированные часы, находятся в одном часовом поясе и т. д. Hth ..

EdSF 04.07.2018 00:39

@Avnego, вы просто вызываете этот метод там, где вы пытаетесь выполнить оператор if.

gilliduck 04.07.2018 02:10

@EdSF Если это не так, и если есть вероятность, что пользователи / веб-серверы / клиентские приложения / что бы то ни было сами не находятся в одном часовом поясе, то в любом случае следует использовать DateTimeOffset, иначе всегда будет проблема.

dodexahedron 06.07.2018 22:43

Другие вопросы по теме