2012-01-04 159 views
0

我需要选择并插入来自table1 database1的信息并将其插入到table1 database2中。问题是这些记录有一个varchar日期(2012年12月12日)我想将该日期转换为datetime,然后将其插入到database2的另一个表中。我怎样才能做到这一点?将文本日期转换为日期时间SQL服务器

我做这个代码测试:

DECLARE @date nvarchar(30) 
SET @date = '12 of enero of 2012' 

PRINT @date 
PRINT cast((REPLACE('12 of enero of 2012', 'of', '')as datetime) 
+0

不要忘记标记正确答案以供将来参考 – 2012-01-06 15:48:36

回答

1

你可以简单地投它,像这样

SELECT CAST(REPLACE('12 of december of 2011', 'of ', '') AS DATETIME) 

所以你有插入做的是,

-- In your last update I noticed you are using Spanish 
-- So you'll have to put <b>SET LANGUAGE SPANISH</b> before your query 
INSERT INTO TABLE1 (MyDateTimeField) 
SELECT CAST(REPLACE(MyVarCharThatContainsDateTimeField, 'of ', '') AS DATETIME) 
FROM TABLE2 

请注意,如果您的字符串不是日期,则会引发错误:

Msg 241, Level 16, State 1, Line 1 
Conversion failed when converting date and/or time from character string. 
+0

好吧,以及如果这些日期有下格式.. 。2011年12月12日,我也必须做这个转换所有记录的表 – user988122 2012-01-04 21:54:10

+0

不会与''的工作,你仍然可以这样做:CAST(REPLACE(2011年12月'12','' ','')AS DATETIME) – 2012-01-04 21:58:16

+0

我发布了测试代码 – user988122 2012-01-04 22:19:45

0

CONVERT函数可用于转换此日期格式。

convert(datetime, '12 december 2012') 
0

基于你的测试代码(以及其他的答案):

SET LANGUAGE Spanish 

DECLARE @date nvarchar(30) 
SET @date = '12 of enero of 2012' 

PRINT @date 
PRINT cast(REPLACE(@date, 'of', '') as datetime)