首页 > 解决方案 > 格式不正确的日期通过 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}构造)?

我知道这不是一个好的设计,在将日期存储在数据表中之前应该使用日期时间列或显式转换,但这不是我能够改变的。

标签: c#.netsql-server

解决方案


推荐阅读