You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DATE类型列BULK INSERT后格式异常及空值填充问题求助

解决BULK INSERT导入DATE类型列的格式与空值问题

一、日期显示格式问题

SQL Server的DATE类型存储时仅保留年月日,你看到的2023-04-03T00:00:00.0000000是客户端工具(如SSMS)的默认显示格式,并非实际存储内容。要以DD-MM-YYYY格式展示数据,只需在查询时使用转换函数:

  • 用CONVERT函数(性能更优):
SELECT CONVERT(VARCHAR(10), 日期列名, 105) AS 格式化日期 FROM stg.leaveapplication;

(105是SQL Server对应DD-MM-YYYY格式的内置样式码)

  • 或用FORMAT函数(语法更直观):
SELECT FORMAT(日期列名, 'dd-MM-yyyy') AS 格式化日期 FROM stg.leaveapplication;

二、空值被填充为1900-01-01的问题

原因是BULK INSERT默认会把CSV中的空字符串转换为对应数据类型的默认值(DATE类型默认值为1900-01-01)。只需在WITH参数中添加KEEPNULLS选项,即可让空值直接导入为NULL:
修改后的BULK INSERT语句:

SET DATEFORMAT DMY;

BULK INSERT stg.leaveapplication FROM 'qa-1/8/testdashboard/Leave dashboard/DatewiseLeaveRoster.csv'
WITH (
    DATA_SOURCE = 'AzureBlobStorage',
    FORMAT = 'CSV',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '0x0A',
    KEEPNULLS -- 新增参数保留空值
);

内容的提问来源于stack exchange,提问作者Moti Prakash Panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:17:06