2012-03-28 95 views
1

我们使用的一个愚蠢的第三方软件将datetime作为varchar存储,这是因为一些很好的旧理由,我需要将它解析为sql datetime。问题是,当该字符串是在MM/DD/YY格式的纯CAST()作为datetiem工作正常,但我的数据被格式化为DD/MM/YY和CAST抛出varchar数据类型的TSQL:将varchar'dd/mm/yy'转换为DATETIME

转换到日期时间数据类型导致 超出范围值。

异常。关于如何使用CONVERT或CAST而不使用RIGHT()/ LEFT()等的提示?

感谢

回答

1

一种办法是在执行转换之前,使用SQL Server的SET DATEFORMAT设置。例如

-- Set date format to day/month/year. 
SET DATEFORMAT dmy; 
GO 

DECLARE @datevar datetime2 = '31/12/2008 09:01:01.1234567'; 
SELECT @datevar; 
GO