你可以使用DATEADD
到26
年加入1990
:
CREATE TABLE #tableName(receivedDate DATE);
INSERT INTO #tableName(receivedDate) VALUES ('1990-01-06'),('1990-01-16');
UPDATE #tableName
SET receivedDate = DATEADD(YEAR, 26, receivedDate)
WHERE DATEPART(yyyy, receivedDate) = '1990'
AND DATEPART(mm, receivedDate) = '01';
SELECT *
FROM #tableName;
LiveDemo
的SQL Server 2012+你可以使用DATEFROMPARTS
:
UPDATE #tableName
SET receivedDate = DATEFROMPARTS(2016,
DATEPART(mm, receivedDate),
DATEPART(dd, receivedDate)
)
WHERE DATEPART(yyyy, receivedDate) = '1990'
AND DATEPART(mm, receivedDate) = '01';
LiveDemo2
编辑
请即表达DATEPART(yyyy, receivedDate) = '1990'
不SARGable和查询优化器会跳过索引ob receivedDate
(如果存在的话)。你可以使用BETWEEN
或>= <
建议使用Gordon Linoff。
谢谢,工作! – user3624883