【问题标题】:How to import date value from Excel into SQL Server containing zero date?如何将 Excel 中的日期值导入包含零日期的 SQL Server?
【发布时间】:2015-03-01 11:30:37
【问题描述】:

当我尝试将日期值从 Excel 导入 SQL Server 并且这些值包含零日期(如 2013-01-00)时,这些值将作为空值保存在数据库中。我该如何解决这个问题?

【问题讨论】:

  • 您想在这些日期类型中保存什么? `
  • 我的文件 excel 包含具有名称(日期)的列,这些值具有以下值:- 3/15/2001 2013-01-00 11/8/2001 1/29/1999 5/26/2001 12 /4/2001 7/18/2001 3/10/2001 7/28/2001 4/21/2001 3/29/2001 7/8/2001 7/19/2000 1/1/2001 12/4/2000 9 /25/2001 9/16/2001 5/23/2001 2/15/2001 12/25/2001 5/3/2001 9/18/2001 9/24/2000 我想将此列导出到 sql server 2008使用导入/导出向导,当我完成时,这个日期(2013-01-00)保存为空,这就是问题所在。那么我该如何解决这个问题呢?
  • 无法将此日期“2013-01-00”存储到 sql 中。你需要把它转换成一些实际的日期。
  • 该值不是有效的日期[时间]值。为什么一天部分是0
  • 我无权更改此日期“2013-01-00”,所以我尝试找到将这个日期保存在数据库中的方法

标签: sql-server excel import


【解决方案1】:

您没有说明您用于导入的方法/环境,因此一般建议是:

  • 做一个特定的替换:

    If (ImportValue = '2013-01-00') Then Import('1/1/1970') Else Import(ImportValue)

  • 进行 IsDate 测试和替换:

    If IsDate(ImportValue) Then Import(ImportValue) Else Import('1/1/1970')

  • 导入后用SQL替换所有空日期值,改为真实日期

让我们知道您正在使用什么环境作为更好的例子。

【讨论】:

  • 我的环境(sql server 2008)和我使用(sql server 导入和导出向导)你能告诉我如何使用 if 条件(If (ImportValue = '2013-01-00')然后 Import('1/1/1970') Else Import(ImportValue) ) 我的意思是我可以在哪里把这个条件放在 sql 或 excel 中?
【解决方案2】:

由于您使用的是向导,您将没有机会创建“If ... Then ...”语句,但很容易导入数据,然后使用 SQL Server Management Studio 更改 NULL 值(SQL-SMS) 工具。

使用向导将 Excel 数据导入 SQL Server:

启动导入和导出数据(32 位),单击下一步 指定 Excel 数据源和工作簿名称, 希望现有的电子表格在第一行有列名 如果是这样,请检查“第一行有列名” 点击下一步 选择目标 SQL Server、身份验证和数据库,单击下一步 点击“从一个或多个表或视图复制数据”,点击下一步 选中要从中导入的工作簿中的工作表 如果您需要特定的表名,请编辑“目标”列 对于此示例,我正在导入表“TestExcelImport” 确保所需的源表保持高亮,单击“编辑映射”按钮, 取决于电子表格的第一行是否有列名 您可能会在“源”列中看到这些列名 如果您喜欢不同的字段名称,您可以更改“目标”列名称 您可以单击“预览...”按钮来查看您导入的数据的大致样子 点击下一步 勾选“立即运行”,点击下一步 查看摘要 您应该会看到类似“将行从 'Sheet1$' 复制到 [TestExcelImport]” 点击完成 向导将执行,并向您显示该过程的详细信息 单击关闭

更新日期字段为 NULL 的行:

打开 SQL-SMS,连接到你导入的 SQL Server 浏览到数据库,然后展开“表” 提示:如果您已经打开了 SQL-SMS,您可能需要右键单击“表格”并选择“刷新” 右键单击您导入的表,然后单击“编辑前 1000 行” 在我上面的示例中,这将是表“TestExcelImport” 您应该看到您的表格及其数据(包括一些 NULL 日期值) 我们要过滤具有 NULL 日期值的记录, 从菜单中选择:查询设计器 > 窗格 > 条件 提示:您也可以选择查看 SQL 窗格,方便学习 SQL 语法 在上方的“条件”窗格中,找到日期行,然后在“过滤器”列中输入:null (它会自动变为“IS NULL”) 单击工具栏中标记为“执行 SQL”的红色感叹号按钮 您将在下部窗格中看到,只有日期为 NULL 的记录 更改查询类型以更新记录 从菜单中选择:查询设计器 > 更改类型 > 更新 您现在将在上方的“条件”窗格中创建一个名为“新值”的新列 在日期值行的“新值”列中,指定要替换的日期 NULL 示例:如果您希望该日期替换所有 NULL 日期值,请在“新值”列中键入“1/1/1980” 注意:请确保“IS NULL”仍在“过滤器”列中 单击工具栏中的红色感叹号按钮以运行 UPDATE 查询。 关闭然后重新打开此表以查看 NULL 日期值替换为 1/1/1980 可选:执行“更改类型”回到“选择”,并删除“IS NULL”过滤器

希望这会有所帮助!! (68m)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    相关资源
    最近更新 更多