【发布时间】:2014-08-08 04:21:06
【问题描述】:
我从一些外部数据源获取数据,需要存储在 SQL Server 表中。但其中一项是日期时间。但我将日期时间字段设为 Varchar 格式,现在在我的 SQL 表中,我需要将其保存为 DateTime 数据类型。
CONVERT(DATETIME,[Date_time],03)
-- 此代码在我的开发环境中有效,但在生产环境中无效。
CONVERT(DATETIME,[Date_time],120)
-- 此代码在我的生产环境中有效,但在开发环境中无效。
这让我很难将代码从开发转移到生产,因为我必须对测试代码进行更改。
请注意,我使用的是 SQL Server 2008 R2。
无论如何我可以使代码相似吗?我无法更改两台服务器上的文化和语言,因为那里部署了许多其他应用程序,它可能会破坏两台服务器中的现有应用程序。
【问题讨论】:
-
为什么您的生产和开发环境会有不同的文化?有点不对劲。
-
我猜你有一些 .net 代码消耗来自外部源的数据......我不太熟悉 .net 的方式,但你的代码显然需要一些条件语句,具体取决于它运行的环境。您可以尝试发出 select @@Version SQL 并根据您返回的内容有一个条件语句来处理不同的环境。这是有关它的更多信息-msdn.microsoft.com/en-us/library/ms177512.aspx ---希望这会有所帮助。
-
SQL 的版本相同,但正如我所说,文化不同,因此需要使用不同的转换方式。我已经向我的经理提出了这个问题,为什么两个环境都有不同的文化?但我什至不得不尝试自己找到解决这个问题的方法..
-
嗨 TMNT2014,我没有从 .net 中提取数据。但是在 SQL 中使用 openquery 来拉它。在 SQL 中提取的所有数据都可以,但由于两个服务器中的文化不同,这个日期时间文件只有问题。您告诉我的解决方案就是我什至使用的解决方案。但是想检查是否有任何标准方法可以解决此问题,而不是根据服务器名称编写 if else 条件。因为从长远来看,服务器可以更改并且代码将开始破坏。希望你能理解我的问题。非常感谢。
-
您似乎遇到了标准化问题......您无法标准化您的环境,但需要标准化您的代码。如果您确实找到了解决此问题的标准方法,请告诉我.. 祝您好运
标签: sql .net sql-server sql-server-2008 datetime