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

SQL日期数据在C# WinForm中复制到TextBox带时间的问题排查

问题原因与解决方案

核心原因

SQL Server的DATE类型在.NET中会被映射为DateTime结构——这个结构本身默认包含时间分量,哪怕数据库里没有存储时间,.NET也会自动填充00:00:00的默认时间值。

你的GridView显示正常,是因为DataGridViewColumn默认会对绑定的DATE类型数据做自动格式化,只渲染日期部分;但在SelectionChanged事件中直接将单元格值赋值给TextBox时,调用的是DateTime的默认ToString()方法,该方法会输出完整的日期+时间格式,所以出现了多余的时间信息。


解决方案

  • 直接格式化赋值:获取单元格的DateTime值后,显式指定格式化字符串输出:
// 替换为你的日期列名和TextBox控件名
DateTime dateValue = (DateTime)dataGridView1.SelectedRows[0].Cells["YourDateColumn"].Value;
yourDateTextBox.Text = dateValue.ToString("dd/MM/yyyy");

注意:用大写MM表示月份,小写mm代表分钟,不要混淆。

  • 通过数据绑定设置格式化:如果TextBox是绑定数据源的,可直接设置绑定的FormatString:
yourDateTextBox.DataBindings.Add(
    "Text", 
    yourDataSource, 
    "YourDateColumn", 
    true, 
    DataSourceUpdateMode.OnPropertyChanged, 
    "", 
    "dd/MM/yyyy"
);
  • 统一控制GridView列格式化(可选):若需要在代码层面统一日期显示规则,可提前给GridView的日期列设置样式:
dataGridView1.Columns["YourDateColumn"].DefaultCellStyle.Format = "dd/MM/yyyy";

内容的提问来源于stack exchange,提问作者Mohamed Rani El Rahaimy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:15:31