SQL CSV 导入时的日期更改

SQL Date change upon CSV import

通过 SSIS .csv 将文件导入 SQL 服务器 table 期间出现奇怪的情况。

CSV 日期 25-May-46 被导入到 NVARCHAR 列。

上选择该列时
REPLACE(CONVERT(NVARCHAR(10), CAST(date_of_birth AS DATE), 111), '/', '-')

我得到“2046-05-25”

将该列转换为 Excel 中的日期时,我得到“1946-05-25”

有人知道是什么原因造成的吗?

可能是 csv 中的日期格式与您的机器本地化不匹配。我认为您应该检查日期格式并检查它是否与您的机器设置匹配

您应该检查 SSMS 中的 "Two Digit Year Cutoff" 参数 - 右键单击​​您的 SQL 服务器 - 服务器属性 - 高级设置。 默认值为 2049,您已预料到此设置的结果。 将其设置为 2045,以在 SQL 服务器上获取“1946-05-25”。

您也可以 check/set 这样的值:

EXEC sys.sp_configure N'two digit year cutoff' --to check

EXEC sys.sp_configure N'two digit year cutoff', N'2045' --to set
GO
RECONFIGURE WITH OVERRIDE
GO

希望对您有所帮助。