在select语句中将substring转换为Datetime字段

时间:2013-04-03 18:35:53

标签: sql-server-2008

我正在从一列中选择子字符串以使用以下方法填充另一列:

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

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

2 个答案:

答案 0 :(得分:0)

自2008年以来,请查看此帖:Create a date with T-SQL

如果您使用2012我会说,您需要使用DATETIMEFROMPARTS并将日期的不同部分放入函数中:http://msdn.microsoft.com/en-us/library/hh213233.aspx

或(从评论中更新)

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

答案 1 :(得分:0)

您必须进行一些其他操作;尝试类似

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

这会将其转换为NVARCHAR格式,SQL Server可以将其隐式转换为日期语法。尽管有很多注意事项;您的数据必须干净,并且必须将服务器的日期设置为与导入文件相同的格式(例如,美国与英国)。