2013-04-03 119 views
0

请随身携带,因为我对此很新。我从一列选择子来填充使用另一列:在select语句中将子字符串转换为日期时间字段

select doc_id,imagevolume, Load_date = substring (location, 42, 10) 
from [!DocImagedArchivedLocation] as datetime 
where LOADDATE is null 

这为我提供了我想要的负荷日的数据,但它是NVCHAR在格式和出来是这样的:01_13_2004。我使用这个select语句作为更新语句的一部分来填充加载日期字段,但似乎无法获得选择此子字符串并将其转换为日期时间字段的语法。

回答

0

既然你说2008年,看看这篇文章:Create a date with T-SQL

如果您正在使用2012我会说,你需要使用DATETIMEFROMPARTS,放在日期的不同部分进入功能:http://msdn.microsoft.com/en-us/library/hh213233.aspx

OR(更新从评论)

select 
doc_id,imagevolume, 
Load_date = CAST(substring (location, 48, 4) + '-' + substring (location, 45, 2) + '-' + substring (location, 42, 2)) AS DATETIME) -- year-month-day 
from [!DocImagedArchivedLocation] as datetime 
where LOADDATE is null 
+0

谢谢你们的帮助,但不会给我什么我要找的字符串是从一列。基本上我想从“位置”出来的子字符串像'01_13_2004'一样出来'2004-01-13 00:00:00.000' – 2013-04-03 18:48:59

+0

好吧,那么为什么你不能把它分解成几部分呢? (查看更新回答) – wilsjd 2013-04-03 19:20:49

+0

我想我可以把它分解成几部分,但这只是一个额外的步骤。不幸的是,2008R2不支持CONCAT功能。 – 2013-04-03 19:38:48

相关问题