У меня была та же проблема, что и у исходного постера. Мой вариант использования был следующим:
Одна таблица содержала дату и время спортивного события. Поскольку я получаю информацию из разных источников, я изменил схему базы данных, поэтому у меня было значение int для времени и даты (или, может быть, просто даты) для даты спортивного события.
Это мой запрос:
UPDATE Matches
SET StartTime= MatchTime.ThisMatchStartTime
FROM Matches AS M
INNER JOIN (SELECT CONVERT(int, CONVERT(varchar, DATEPART(Hour, MatchDate)) + RIGHT('00' + CONVERT(varchar, DATEPART(Minute, MatchDate)),2)) AS ThisMatchStartTime, MatchId
FROM [Matches]
WHERE SportTypeId=16) AS MatchTime ON M.MatchId=MatchTime.MatchId
WHERE StartTime > 2400
AND SportTypeId = 16;
Некоторое объяснение:
Вы должны дать подзапросу MatchStartTime другое имя, иначе вы получите предупреждение / ошибку от SQL Server.
Мне также пришлось добавить MatchId, чтобы я знал, что обновляю правильный матч.
SportTypeId используется для разделения различных видов спорта в базе данных.
Спасибо @astander за указание в правильном направлении. Без его поста я бы немного больше боролся за то, чтобы найти это решение.