SSIS导入CSV至SQL Server:如何将12小时制时间转为24小时制
解决CSV 12小时制时间导入SQL Server自动转为24小时制的方法
以下是几种无需手动修改Excel的自动转换方案:
方案一:通过SQL Server导入向导直接转换
- 启动SQL Server导入和导出向导,选择CSV作为数据源
- 进入「高级」设置界面,将目标时间列的数据类型临时设为
string(确保完整读取带AM/PM的时间文本) - 在「数据转换」步骤中,对该列使用转换函数:
CONVERT(time(7), [源时间列名], 100)- 样式码
100用于识别包含AM/PM标识的12小时制时间字符串,自动转为24小时制的time(7)类型
- 样式码
- 完成向导配置后执行导入,
2:00 PM会被正确转换为14:00:00存入目标列
方案二:使用SSIS包处理
- 在SSIS中创建包,添加「平面文件源」组件并连接到CSV文件,将时间列的输出类型设为
DT_STR(字符串类型) - 添加「派生列」组件,新增派生列,输入表达式:
(DT_DBTIME2,7)[源时间列名]- SSIS会自动解析带AM/PM的12小时制字符串,转换为符合要求的24小时制
time(7)类型
- SSIS会自动解析带AM/PM的12小时制字符串,转换为符合要求的24小时制
- 将派生列输出连接到「OLE DB目标」组件,映射到SQL Server的
time(7)列,运行包完成导入
方案三:先导入临时表再批量转换
- 创建临时表,将时间列定义为
varchar(20)类型,将CSV数据完整导入该临时表 - 执行以下SQL语句,将临时表中的时间转换后插入目标表:
INSERT INTO 目标表(目标时间列) SELECT CONVERT(time(7), 临时表时间列, 100) FROM 临时表
- 该语句通过
CONVERT函数的样式码100自动完成12小时制到24小时制的转换
内容的提问来源于stack exchange,提问作者crichavin
相关产品推荐
相关产品推荐

