Giả sử bạn biết khoảng chênh lệch giữa UTC và múi giờ mà dữ liệu được lưu trữ, điều đó khá đơn giản:
DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);
Xin lưu ý rằng điều đó có thể là tiêu cực hoặc tích cực, tôi không biết bạn thuộc phe nào của Greenwich.
Tất nhiên điều này sẽ phức tạp hơn nếu bạn đang ở trong múi giờ quan sát thời gian tiết kiệm ánh sáng ban ngày; trong trường hợp này, bạn có thể cần một giải pháp mở rộng hơn như sử dụng bảng lịch. Điều này đặc biệt phức tạp nếu dữ liệu của bạn kéo dài trở lại trước khi George Bush thay đổi các quy tắc DST của Mỹ, chẳng hạn. Tôi có một bài viết từ lâu lắm rồi có thể hữu ích ; một loạt bài gần đây hơn ở đây:
- Xử lý chuyển đổi giữa các múi giờ trong SQL Server - phần 1
- Xử lý chuyển đổi giữa các múi giờ trong SQL Server - phần 2
- Xử lý chuyển đổi giữa các múi giờ trong SQL Server - phần 3
Ngoài ra, nếu bất kỳ dữ liệu nào của bạn nằm trong khoảng thời gian từ 12:00 sáng đến 2:00 sáng vào một ngày mùa xuân trở đi / mùa thu trở lại, nơi tôi không bao giờ chắc chắn liệu việc thay đổi nó là đúng vì đó là ngày chuyển đổi hay không thay đổi vì nó trước 2 giờ sáng.