#c# #mysql #datetime
#c# #mysql #datetime
Вопрос:
Прочитайте временную метку из базы данных MySQL и сравните с сегодняшней датой, DateDeposited
, формат yyyy-MM-dd HH:mm tt
.
MySqlCommand cmd1 = conn.CreateCommand();
cmd1.CommandType = CommandType.Text;
cmd1.CommandText = ("select * from deposits where MemberID = @MemberID");
cmd1.Parameters.AddWithValue("@MemberID", lblmemberID.Text);
//DataReader
MySqlDataReader da;
conn.Open();
da = cmd1.ExecuteReader();
if (da.Read())
{
// DateDeposited is timestamp
if(da["DateDeposited"].ToString() == DateTime.Today.Date.ToString())
{
MessageBox.Show("Deposit already recorded");
conn.Close();
}
}
Комментарии:
1. Попробуйте это:
da["DateDeposited"].ToString().Equals(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");)
2. Я сравниваю da [«DateDeposited»]. toString() для сегодняшней даты (дд-ММ-гггг), пожалуйста, обратите внимание, что DateDeposited в базе данных — это временная метка в формате (гггг-ММ-дд)
3. Да, и именно поэтому я форматирую текущую дату в метку времени MySQL.
4. Не сравнивая ее с Datetime. Теперь я сравниваю с сегодняшней датой в формате (дд / ММ / гггг)
5. Смотрите этот пример преобразования временной метки MySQL в C # Datetime только с частью даты: dotnetfiddle.net/bJzbi7
Ответ №1:
Вы ищете способ узнать, находится ли временная метка между 00:00 и 23: 59: 59 по местному времени сегодня.
Этот запрос работает. И поскольку вы используете TIMESTAMP
типы данных и выполняете сравнение дат внутри сервера MySQL, вам не нужно беспокоиться о разных настройках часового пояса на компьютере MySQL и компьютере, на котором выполняется ваш код C #.
SELECT *,
CASE WHEN (DATE(DateDeposited)) = CURDATE() THEN 'yes'
ELSE 'No' END IsItToday
FROM deposits where MemberID = @MemberID
Почему это работает? DATE(ts)
извлекает дату временной метки.
Ответ №2:
Удалось решить проблему, добавив скрытый datetimepicker и прочитав его значение, и проверил, равно ли оно временной метке date из базы данных
MySqlCommand cmd1 = conn.CreateCommand();
cmd1.CommandType = CommandType.Text;
cmd1.CommandText = ("select * from deposits where MemberID=@MemberID and DepositAmount=@DepositAmount and (DATE_FORMAT(DateDeposited,'%Y-%m-%d')= CURRENT_DATE())");
cmd1.Parameters.AddWithValue("@Name", txtname.Text);
cmd1.Parameters.AddWithValue("@Phone", txtphone.Text.ToString());
cmd1.Parameters.AddWithValue("@DepositAmount", txtamount.Text.ToString());
cmd1.Parameters.AddWithValue("@Rate", txtrate.Text.ToString());
cmd1.Parameters.AddWithValue("@MemberID", lblmemberID.Text);
//DataReader
MySqlDataReader da;
conn.Open();
da = cmd1.ExecuteReader();
if (da.Read())
{
string s;
DateTime converted = Convert.ToDateTime(da["DateDeposited"]);
s = converted.ToString("yyyy/MM/dd");
if ( da["MemberID"].ToString()==lblmemberID.Text amp;amp; da["DepositAmount"].ToString()== txtamount.Text.ToString()amp;amp; s.ToString()==dateTimePicker1.Value.Date.ToString("yyyy/MM/dd"))
{
MessageBox.Show("Deposit already recorded", "Warning!!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
conn.Close();
}
}