您可以使用DATEPART:
返回表示指定日期的指定部分的整数。
与DATEADD联合:
返回指定日期与指定数目的时间间隔(带符号的整数)加入到该日期的指定datepart。
实施例:
DECLARE @val AS DATETIME = '1899-12-30 01:30:00.000';
SELECT @val; -- 1899-12-30 01:30:00.000
SET @val = DATEADD(SECOND, DATEPART(MINUTE, @val),
DATEADD(MINUTE, (DATEPART(HOUR, @val)),
CAST(CAST(@val AS DATE) AS DATETIME)));
SELECT @val; -- 1899-12-30 00:01:30.000
此连铸值到date
,以剥离时间部分和回datetime
的时间设定为00:00:00
。然后根据小时值和基于分钟值的秒数添加分钟数。
您可以将此与UPDATE
声明一起使用,但要确保您使用WHERE
子句来避免更新所有内容,除非这是您的意图。
示例更新查询:
CREATE TABLE #temp
(
AvgTimeToAnswer DATETIME
);
INSERT INTO #temp
(AvgTimeToAnswer)
VALUES ('1899-12-30 01:30:00.000');
SELECT *
FROM #temp; -- 1899-12-30 01:30:00.000
UPDATE #temp
SET AvgTimeToAnswer = DATEADD(SECOND, DATEPART(MINUTE, AvgTimeToAnswer),
DATEADD(MINUTE,
(DATEPART(HOUR, AvgTimeToAnswer)),
CAST(CAST(AvgTimeToAnswer AS DATE) AS DATETIME)));
-- WHERE some condition
SELECT *
FROM #temp; -- 1899-12-30 00:01:30.000
DROP TABLE #temp;
有,但你将如何找出那些*某些*记录? – GurV
你想将分钟的值移到秒和小时到分钟? –
正确我想将时间显示为00:01:30,当前显示为01:30:00,并将分钟显示为秒。我不确定如何识别特定的记录,但这是可以理解的。 – Tom