0

我从一列中选择一个子字符串来填充另一列:

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

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

4

2 回答 2

0

既然你说的是 2008 年,请查看这篇文章:使用 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
于 2013-04-03T18:40:57.633 回答
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

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

于 2018-07-15T15:43:05.790 回答