我正在从一列中选择子字符串以使用以下方法填充另一列:
select doc_id,imagevolume, Load_date = substring (location, 42, 10)
from [!DocImagedArchivedLocation] as datetime
where LOADDATE is null
这为我提供了我想要加载日期的数据,但它的格式是NVCHAR,如下所示:01_13_2004。我正在使用此select语句作为更新语句的一部分来填充加载日期字段,但似乎无法正确选择此子字符串并将其转换为日期时间字段。
答案 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可以将其隐式转换为日期语法。尽管有很多注意事项;您的数据必须干净,并且必须将服务器的日期设置为与导入文件相同的格式(例如,美国与英国)。