c# - 格式不正确的日期通过 DBDataAdapter.Update 在 DB 中突然出现 - 它从哪里获得格式?
问题描述
一段时间以来,我一直试图与我的同事一起解决这个问题,但没有成功。
我们有一个将数据导入数据库的 .NET 应用程序,包括保存到 varchar 列中的日期/日期时间。在一个系统上,日期似乎随机地采用与预期不同的格式,这导致了问题。
我们得到的不是预期的 YYYY-mm-dd,而是 MMM dd YYYY,即 2021-02-10 显示为 2021 年 2 月 2 日。我们找不到它的来源。运行应用程序的用户具有文化 en_US。没有更改日期格式。我们在 SQL Server 和 Windows 中看到的所有内容都设置为英语(美国),Get-Culture 小程序返回相同的值。dbcc useroptions 在好服务器和坏服务器上都将 us_english 显示为语言,将 dateformat 显示为 mdy。
SQL适配器代码还能在哪里寻找文化/语言环境/日期格式(在adapter.Update中的某个时刻,必须有一个隐式转换,因为更新命令以文本形式出现(并且是一个简单的set {0} = @{0}
构造)?
我知道这不是一个好的设计,在将日期存储在数据表中之前应该使用日期时间列或显式转换,但这不是我能够改变的。
解决方案
推荐阅读
- javascript - 由于多种样式,React 组件重新渲染
- django - ImportError:在创建数据库时无法导入 Django
- java - 调用 API 时如何避免空检查?
- java - 如何生成注销处理方法
- pdf - CKEditor 使用工具栏上的“图像”按钮处理 PDF
- dialog - AEM 6.4 - 如何使用 Sling 模型从设计对话框中读取多字段?
- c# - 更改网格视图中的选定项目后更新列表视图项目值
- angular - this.http.get 的超时不能超过 2 分钟?
- r - R: 执行 rbind() 后设置一致的索引值
- node.js - 如何要求 Node.js 模块?