感谢昨天对日期转换提出建议的人,我现在有了一个可以工作的 SELECT 脚本。
不幸的是,当我尝试将其转换为 UPDATE 脚本时,我感到很害怕
Msg 4104, Level 16, State 1, Line 25
The multi-part identifier "mbrProject.ID" could not be bound.
对于每个匹配的 ID (mbrProject.[ID] = ProjectDates.[Project_ID]),整个脚本应将 mbrProject 中的日期插入 ProjectDates,同时在 mbrProject 中解析混合的美国和英国格式日期,因为用户在更新时的国家/地区设置不正确桌子(我不能改变)。
Update ProjectDates
SET ProjectDates.[Start_Date] =
(
select right([Start_Date],4) +
case
when len([Start_Date])=10 then
substring([Start_Date],4,2) + left([Start_Date],2)
else right('0' + left([Start_Date],firstIndex-1),2) +
right('0' + substring([Start_Date],firstIndex+1,secondIndex - firstIndex-1),2)
end
from
(
select mp.[Start_Date], charindex('/',mp.[Start_Date],1) firstIndex,
charindex('/',mp.[Start_Date],charindex('/',mp.[Start_Date],1)+1) secondIndex
from mbrProject mp
join ProjectDates pd
on mp.ID = pd.Project_ID
)A
where mbrProject.[ID] = ProjectDates.Project_ID
)
如果我只运行 SELECT 语句,它工作正常,返回正确的值。即一切从
select right([Start_Date],4) +
case
向下
from mbrProject mp
join ProjectDates pd
on mp.ID = pd.Project_ID
)A
但是,一旦我尝试将其包含在 UPDATE 语句中,就会出现错误。
我知道这取决于语法,但是无论我尝试移动什么东西,我都无法弄清楚。
请问有什么想法吗?
谢谢克雷格