当我运行以下查询时,我正确地获得了一个行列表,我需要在其中更改一列......
SELECT b.* from btable b JOIN ptable p ON p.p_empno = b.b_empno WHERE EMPTY(b.b_expdate) AND p.p_active <> [T] AND INLIST(b_beneid,[I],[S])
我的问题是,现在我需要使用相同的条件使用{^ 2016-12-31}更新btable.b_expdate,并且无法获得有效的语法。 (几年前在foxpro工作,现在在MSSQL工作)
有人可以帮助修改我需要的语法吗?
答案 0 :(得分:2)
我认为在MSSQL中是一样的(我会在那里写相同的,使用'20161231'或datefromparts(2016,12,31)而不是{^ 2016/12/31} - 请注意,在VFP 分号是命令行连续字符,而不是在MSSQL中的语句结束字符:
UPDATE bTable ;
SET b_expdate = {^2016/12/31} ;
FROM pTable p ;
WHERE Empty(bTable.b_expdate) ;
AND p.p_empno = bTable.b_empno ;
AND p.p_active <> 'T' ;
AND b_beneid IN ( 'I', 'S' )
编辑:也许你明年需要2017/12/31相同的代码,实现代码“今年的12月31日”而不是?如果是这样的话:
UPDATE bTable ;
SET b_expdate = Date(Year(Date()),12,31) ;
FROM pTable p ;
WHERE Empty(bTable.b_expdate) ;
AND p.p_empno = bTable.b_empno ;
AND p.p_active <> 'T' ;
AND b_beneid IN ( 'I', 'S' )
EDIT2:这个是您的表名:
UPDATE hbene ;
SET b_expdate = Date(Year(Date()),12,31) ;
FROM hrpersnl p ;
WHERE Empty(hbene.b_expdate) ;
AND p.p_empno = hbene.b_empno ;
AND p.p_active <> 'T' ;
AND b_beneid IN ( 'I', 'S' )