如何将数据库DateTime列值设置为仅保留日期部分,避免自动追加时间
问题核心原因
- 不管是C#中的
DateTime类型还是数据库的DateTime类型,本质都是同时存储日期和时间两个部分,不存在仅包含日期的DateTime值,你理解的“仅保留日期”本质是时间部分为00:00:00的特殊情况 - 你当前的代码属于冗余操作:先把日期转成字符串再转回日期类型,最终得到的
DateTime值依然会携带00:00:00的时间部分,无法实现你的需求
对应解决方案
你可以根据实际需求选择对应处理方式:
场景1:仅需要存入1900年1月1日的等效日期值,允许时间部分为0点
直接赋值即可,不需要做多余的字符串转换操作,代码如下:
orderRow.OrderDateSent = new DateTime(1900, 1, 1);
这个值存入数据库后时间部分会自动为00:00:00,已经是日期维度下1900年1月1日的标准存储格式,不需要额外处理。
场景2:要求数据库层面只存储日期、完全不存储时间部分
修改数据库对应字段的类型,从DateTime改为Date类型,该类型本身仅存储日期,不包含时间信息,赋值代码和场景1一致即可。
场景3:仅需要在前端展示、数据导出等场景只显示日期部分
不需要修改存储逻辑,在展示时对DateTime值做格式化即可,例如C#中可以用orderRow.OrderDateSent.ToString("yyyy/MM/dd")输出仅带日期的字符串。
内容的提问来源于stack exchange,提问作者GRF
相关产品推荐
相关产品推荐

