【问题标题】:How to read TimeStamp from MySQL database and check if equal to todays date如何从 MySQL 数据库中读取时间戳并检查是否等于今天的日期
【发布时间】:2019-08-21 09:55:42
【问题描述】:

从 MySQL 数据库中读取 TimeStamp 并与今天的日期比较,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();
    }
}

【问题讨论】:

  • 试试这个:da["DateDeposited"].ToString().Equals(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");)
  • 我将 da["DateDeposited"].ToString() 与今天(dd-MM-yyyy)日期进行比较,请注意数据库中的 DateDeposited 格式为时间戳(yyyy-MM-dd)跨度>
  • 是的,这就是我将当前日期格式化为 MySQL 时间戳的原因。
  • 不将其与日期时间进行比较。现在正在与格式中的今天日期进行比较(dd/MM/yyyy)
  • 查看此示例以将 MySQL TimeStamp 转换为 C# Datetime,仅使用 Date 部分:dotnetfiddle.net/bJzbi7

标签: c# mysql datetime


【解决方案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();
}
}

【讨论】:

    【解决方案2】:

    您正在寻找一种方法来确定时间戳是否在当地时间今天 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) 检索时间戳的日期。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2011-08-12
      • 2018-04-05
      • 2017-07-28
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多