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
希望对您有所帮助。
通过 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
希望对您有所帮助。