Closed
Description
从sqlserver2016增量数据同步到pg13时,时间列会加8小时(sqlserver的cdc插件采用的是社区提供的sqlserver2019插件)
以下是一个包含多种时间类型列的 SQL Server 表创建脚本及测试数据插入示例:
-- 创建表
-- 创建测试表
CREATE TABLE TimeTestTable (
RecordID INT PRIMARY KEY IDENTITY(1,1),
EventName VARCHAR(50) NOT NULL,
StartTime TIME, -- 仅存储时间
EventDate DATE, -- 仅存储日期
DateTimeOriginal DATETIME, -- 传统日期时间(精度约3ms)
DateTime2Precision DATETIME2(3), -- 高精度日期时间(3位小数秒)
CreatedAt DATETIMEOFFSET, -- 带时区的时间戳
ModifiedTime DATETIME2(0) -- 不带小数秒的时间
);
-- 插入数据(不指定自增主键 ID)
-- 插入当前时间相关数据
INSERT INTO TimeTestTable (EventName, StartTime, EventDate, DateTimeOriginal, DateTime2Precision, CreatedAt, ModifiedTime)
VALUES (
'系统启动',
CONVERT(TIME, GETDATE()), -- 当前时间
GETDATE(), -- 当前日期
GETDATE(), -- 传统datetime
SYSDATETIME(), -- 高精度datetime2
SYSDATETIMEOFFSET(), -- 带时区的时间
SYSUTCDATETIME() -- UTC时间
);
-- 插入特定时间数据(包含时区转换)
INSERT INTO TimeTestTable (EventName, StartTime, EventDate, DateTimeOriginal, DateTime2Precision, CreatedAt, ModifiedTime)
VALUES (
'国际会议',
'14:30:00', -- 固定时间
'2023-12-25', -- 固定日期
'2023-12-25 14:30:00', -- 无时区时间
'2023-12-25 14:30:00.123', -- 精确到毫秒
'2023-12-25 14:30:00 +08:00', -- 东八区时间
'2023-12-25 06:30:00' -- UTC时间对应
);
-- 插入边界值测试
INSERT INTO TimeTestTable (EventName, StartTime, EventDate, DateTimeOriginal, DateTime2Precision, CreatedAt, ModifiedTime)
VALUES (
'跨日事件',
'23:59:59.999', -- 接近午夜
'9999-12-31', -- 最大日期
'2024-02-29 23:59:59.997', -- 闰年测试
'2024-02-29 23:59:59.999', -- 最大精度
'2024-02-29 23:59:59.999 +00:00', -- UTC时间
'2024-02-29 23:59:59'
);
wx:@全家桶