【问题标题】:SQL Date change upon CSV importCSV 导入时的 SQL 日期更改
【发布时间】:2017-07-27 04:27:55
【问题描述】:

.csv 文件通过 SSIS 导入 SQL Server 表期间的奇怪情况。

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

当在

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

我得到'2046-05-25'

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

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

【问题讨论】:

    标签: sql-server csv ssis ssis-2012


    【解决方案1】:

    您应该检查 SSMS 中的“两位数年份截止”参数 - 右键单击​​ SQL Server - 服务器属性 - 高级设置。 默认值为 2049,您对此设置有预期的结果。 将其设置为 2045,以在 SQL Server 上获取“1946-05-25”。

    你也可以像这样检查/设置这个值:

    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
    

    希望这会有所帮助。

    【讨论】:

    • 帕维尔,你是个该死的摇滚明星!!谢谢!! :)) 这让我花了一天多的时间研究这个问题!谢谢!
    • 哇,我是摇滚明星!谢谢! :) 顺便说一句,你的问题已经很清楚了,抛开所有错误的假设。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2014-05-29
      • 1970-01-01
      • 2022-07-20
      • 2023-02-18
      • 2019-06-29
      • 1970-01-01
      相关资源
      最近更新 更多