使用MySqlCommandBuilder时,在datagridview中更新时间值时日期值会更改

时间:2015-07-27 14:50:17

标签: c# mysql datetime datagridview

我有表(测试),包含两个字段,如

dt_id(datatype-in​​t)(主键),

dt(datatype-datetime)

我使用此SQL查询在datagridview中单独显示日期和时间。

string query = "select `test`.`dt_id`,`test`.`dt` as 'date', `test`.`dt` as 'time' from test";

我正在以下列格式显示日期和时间

dataGridView1.Columns["date"].DefaultCellStyle.Format = "dd/MM/yyyy";
dataGridView1.Columns["time"].DefaultCellStyle.Format = "hh:mm tt";

我有以下代码的更新按钮。

private void buttonUpdate_Click(object sender, EventArgs e)
{
   MySqlCommandBuilder cb = new MySqlCommandBuilder(dataAdapter);
   dataAdapter.Update(dataTable);
}

让我们说,datagridview显示以下数据

dt_id ----------日期----------时间

1 ----------- 15/08/1947 ----- 07:22 PM

点击更新按钮后,我将时间列值更改为06:22 PM。更新成功,但是当我在datagridview中再次显示数据时,日期值已更改为今天的日期。

dt_id ----------日期----------时间

1 ----------- 27/07/2015 ----- 06:22 PM

实际上日期值在MYSQL数据库中受到影响。

如何在不更改datagridview中的日期值的情况下更改或更新时间值?

1 个答案:

答案 0 :(得分:0)

好的,当您尝试更新组合的date_time值中的仅时间值时,它也会更新日期。

以下更新查询将仅更新日期时间列的时间

update testing set date_time=concat(substr(date_time,1,11),'20:21:00') where id=2;

现有数据:

+----+---------------------+
| id |date_time            |
+----+---------------------+
|  1 | 1987-03-20 18:10:00 |
|  2 | 1989-03-20 19:32:00 |
+----+---------------------+

仅更新时间后:

+----+---------------------+
| id | date_time           |
+----+---------------------+
|  1 | 1987-03-20 13:00:00 |
|  2 | 1989-03-20 20:21:00 |
+----+---------------------+
相关问题