【问题标题】:Selecting DATE from database without time无时间从数据库中选择 DATE
【发布时间】:2017-08-11 18:32:42
【问题描述】:

我试图从我的一个数据库表中选择 DATE,我使用日期作为主键,但是当我检索 DATE 时,还有时间是 0:00:00。我只需要 DATE 将其插入组合框中,然后再次将其作为 PK 写入另一个表的数据库中。

public void race_combo()
{
    MySqlConnection con = new MySqlConnection(connection);
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM race", con);
    MySqlDataReader msdr;

    try
    {
        con.Open();
        msdr = cmd.ExecuteReader();
        while (msdr.Read())
        {
            string team_id = msdr.GetString("id_race");
            MessageBox.Show(team_id);
            comboBox4.Items.Add(team_id);
            comboBox6.Items.Add(team_id);
            comboBox9.Items.Add(team_id);

        }
        con.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

数据库表: http://prntscr.com/g7cadr

这是我得到的输出,我相信它与 GetString 有关,但我不确定它是如何不同的。

http://prntscr.com/g7cayj

【问题讨论】:

  • 1) c# 中没有原生类型只有Date,只有DateTime。 2) 你为什么使用GetString 阅读你的date,你是否将日期作为字符串存储在数据库中?如果它是一个日期,那么你应该把它作为一个日期读回来(即日期时间)。
  • 这是显示层问题。将组合框配置为仅显示日期部分或添加字符串值,将正确的格式传递给ToString
  • 我不确定我还应该如何存储它,DateTime?我仅将其存储为 DATE
  • @renekton - 正确。以原始格式存储您的类型。 int = int、date = date 等。不要将数据库中的所有内容都转换为字符串。
  • 非常感谢,我对 C# 有点陌生,对一切都不熟悉,所以我会尝试我找到的任何东西。

标签: c# mysql


【解决方案1】:

首先使用GetDateDime() 将值读取为DateTime,然后使用ToString 转换为您选择的任何格式的字符串:

DateTime team_id = msdr.GetDateTime("id_race");
String team_id_string = team_id.ToString("yyyy-MM-dd");
MessageBox.Show(team_id_string);
comboBox4.Items.Add(team_id_string);
comboBox6.Items.Add(team_id_string);
comboBox9.Items.Add(team_id_string);

【讨论】:

    【解决方案2】:

    在查询中使用DATE_FORMAT 函数

    SELECT DATE_FORMAT(id_race , "%Y-%m-%d") AS id_race FROM race
    

    代码:

    public void race_combo()
    {
        MySqlConnection con = new MySqlConnection(connection);
        MySqlCommand cmd = new MySqlCommand("SELECT DATE_FORMAT(id_race , "%Y-%m-%d") AS id_race FROM race", con);
        MySqlDataReader msdr;
    
        try
        {
            con.Open();
            msdr = cmd.ExecuteReader();
            while (msdr.Read())
            {
                string team_id = msdr.GetString("id_race");
                MessageBox.Show(team_id);
                comboBox4.Items.Add(team_id);
                comboBox6.Items.Add(team_id);
                comboBox9.Items.Add(team_id);
    
            }
            con.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    

    【讨论】:

      【解决方案3】:

      最简单的方法是在 mySQL 查询中使用 DATE() 进行转换:

      SELECT columnname, DATE(datecolumn) FROM .....
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-02
        相关资源
        最近更新 更多