我从一些外部数据源获取数据,需要存储在SQL服务器表中。但其中一个提交的是Datetime。但我将该datetime字段作为Varchar格式,现在在我的SQL表中我需要将其保存为DateTime数据类型。
CONVERT(DATETIME,[Date_time],03)
- 此代码适用于我的开发环境,但不适用于生产。
CONVERT(DATETIME,[Date_time],120)
- 此代码适用于我的生产,但尚未开发。
这使得我的生活很难将代码从开发转移到生产,因为我必须对经过测试的代码进行更改。
请注意我使用的是SQL Server 2008 R2。
无论如何,我可以使代码类似吗?我无法更改两台服务器上的文化和语言,因为在那里部署了许多其他应用程序,它可能会破坏两台服务器中的现有应用程序。
答案 0 :(得分:0)
您的问题的解决方法是提供一个计算(或定义)每个环境的正确样式的功能。这个最简单的选项是用户定义的函数。
CREATE FUNCTION [dbo].[fnCustomDateStyle]()
RETURN int AS
BEGIN
RETURN 3 # Or 120, in the other environment
END
因此可以在每个环境中使用:
CONVERT(DATETIME, [Date_Time], fnCustomDateStyle())
答案 1 :(得分:0)
您可以尝试使用SET
语句覆盖日期格式,如下所示:
SET DATEFORMAT mdy;
SELECT CONVERT(DATETIME, [Date_Time], 120);
只要您在两个环境中的存储过程/查询中包含此代码,这应该没问题。您可能希望在MSDN上阅读相关内容。