SQL中的日期时间类型转换

时间:2014-06-18 01:53:23

标签: sql .net sql-server sql-server-2008 datetime

我从一些外部数据源获取数据,需要存储在SQL服务器表中。但其中一个提交的是Datetime。但我将该datetime字段作为Varchar格式,现在在我的SQL表中我需要将其保存为DateTime数据类型。

CONVERT(DATETIME,[Date_time],03) 

- 此代码适用于我的开发环境,但不适用于生产。

CONVERT(DATETIME,[Date_time],120) 

- 此代码适用于我的生产,但尚未开发。

这使得我的生活很难将代码从开发转移到生产,因为我必须对经过测试的代码进行更改。

请注意我使用的是SQL Server 2008 R2。

无论如何,我可以使代码类似吗?我无法更改两台服务器上的文化和语言,因为在那里部署了许多其他应用程序,它可能会破坏两台服务器中的现有应用程序。

2 个答案:

答案 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上阅读相关内容。