You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

转换DateTime时丢失秒值,如何获取数据库中完整的HH:mm:ss格式时间?

问题解决方法

你的核心问题有两个:

  1. ToString格式字符串错误:你把固定日期"1900-01-01"当成了格式模板,这会强制输出固定日期,还会丢失时间的秒级精度;
  2. 不必要的字符串转换:将DateTime转为字符串传递给数据库参数,容易丢失精度,还可能引发格式兼容问题。

正确做法

直接使用DateTime类型传递参数,避免字符串转换,完整保留时间精度:

修改后的代码

// 直接转换为DateTime类型,不转成字符串
DateTime tmtke = Convert.ToDateTime(tmetake.Text);

conn.Open();
MySqlCommand cmd = new MySqlCommand("UPDATE hcrsward SET crseward = @crseward " +
   "WHERE enccode = @enccode and entryby = @entryby and tmetake = @tmetake", conn);

cmd.Parameters.AddWithValue("@enccode", tbox_passed_id.Text);
// 如果dtetake也是日期类型,同样建议转成DateTime再传参
cmd.Parameters.AddWithValue("@dtetake", Convert.ToDateTime(dtetake.Text));
// 直接传递DateTime对象,保留完整时间(包括秒)
cmd.Parameters.AddWithValue("@tmetake", tmtke);
cmd.Parameters.AddWithValue("@crseward", cw.Text);
cmd.Parameters.AddWithValue("@entryby", tbox_docby.Text);

cmd.ExecuteNonQuery();

额外注意事项

  • 确保TextBox控件tmetake的输入内容包含秒数(比如1900-01-01 14:51:32),如果输入本身只有分没有秒,转换后自然会是14:51:00;
  • 更严谨的写法是指定数据库参数类型,避免隐式转换问题:
cmd.Parameters.Add("@tmetake", MySqlDbType.DateTime).Value = tmtke;

内容的提问来源于stack exchange,提问作者J.szareyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:00:24