从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();
}
}
答案 0 :(得分:0)
您正在寻找一种方法来找出时间戳记是否在今天当地时间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)
检索时间戳记的日期。
答案 1 :(得分:-1)
能够通过添加隐藏的datetimepicker并读取其值并检查其是否等于数据库中的时间戳日期来解决
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 && da["DepositAmount"].ToString()== txtamount.Text.ToString()&& s.ToString()==dateTimePicker1.Value.Date.ToString("yyyy/MM/dd"))
{
MessageBox.Show("Deposit already recorded", "Warning!!", MessageBoxButtons.OK, MessageBoxIcon.Stop);
conn.Close();
}
}