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

DataGridView(DGV)日期格式错乱问题求助

DataGridView(DGV)日期格式错乱问题求助

嘿,我来帮你搞定这个DGV日期格式的问题!

你遇到的奇怪格式(202,231,12)其实是因为用错了MySQL的函数——FORMAT()在MySQL里是用来格式化数字的(比如把123456变成123,456),你把日期值传给它,它会把日期当成数字解析,自然就出现了这种乱码一样的逗号分隔格式。

给你两个靠谱的解决办法:

方法1:用MySQL的日期格式化函数修正查询

把SQL里的FORMAT()换成专门处理日期的DATE_FORMAT()函数,并且指定你想要的格式(%m/%d/%Y对应MM/DD/YYYY),修正后的完整代码如下:

cm = new MySqlCommand("SELECT OrderID, DATE_FORMAT(Orderdate, '%m/%d/%Y') as OrderDate, CustomerID, Username, ProductID, Qty, Price, TotalAmount FROM ordertb WHERE OrderDate LIKE'%" + txtSearch.Text+"%'", con);

这样查询出来的OrderDate就是你想要的12/31/2022格式,不会带时间,也不会乱码。

方法2:直接在DGV里设置列格式(更推荐)

如果你不想修改SQL查询,也可以直接在C#代码里设置DGV列的显示格式,这样即使查询返回的是带时间的日期类型,也能自动隐藏时间部分:

// 假设你的DGV名为dataGridView1,OrderDate列是日期类型
dataGridView1.Columns["OrderDate"].DefaultCellStyle.Format = "MM/dd/yyyy";

这种方法更好,因为它保留了日期的原始数据类型,后续如果要对日期做排序、筛选等操作会更方便,不会因为变成字符串而出问题。

另外提醒一下:你的SQL语句里直接拼接了txtSearch.Text,这存在SQL注入风险,建议改用参数化查询,比如:

cm = new MySqlCommand("SELECT OrderID, DATE_FORMAT(Orderdate, '%m/%d/%Y') as OrderDate, CustomerID, Username, ProductID, Qty, Price, TotalAmount FROM ordertb WHERE OrderDate LIKE @searchText", con);
cm.Parameters.AddWithValue("@searchText", "%" + txtSearch.Text + "%");

这样更安全哦!

备注:内容来源于stack exchange,提问作者xeyon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:18:11