将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?

Posted

技术标签:

【中文标题】将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?【英文标题】:Import/convert my date column from Excel into a datetime datatype in SQL Server? 【发布时间】:2021-04-05 22:42:54 【问题描述】:

我正在导入 CSV 格式的 Excel 文件。该文件有 1,048,576 行。 到目前为止,我还无法导入具有 datetime 数据类型的文件或将具有日期的列转换/转换为 datetime 数据类型。我只能将日期列作为nvarcharvarcharsql variant 导入。我唯一可以转换该列的时间是文件少于 71000 行。否则我会收到一个错误,即从字符串的转换超出范围或失败。 (请参阅下面的图片和更多详细信息)

我已经尝试了以下

强制转换或转换列 通过表格设计更改数据类型 使用日期时间数据类型导入 将数据复制并粘贴到日期时间列 在导入前检查和转换 Excel 中的日期列 批量插入文档 作为文本文件导入 删除 excel 文件中的空列 作为非字符串变量导入 创建临时表 使用日期时间数据类型制作临时变量

注意事项

    我使用的是开发者版的sql server 我正在尝试将日期列(transaction_date,date_created)放入 日期时间数据类型,我目前只能将它们作为 narvchar 数据类型

如何导入 CSV 文件 Right clicking database, clicking task and import flat file

错误消息 Error message when trying to convert via table design Error message when importing csv file to sql server

CSV 文件示例 Sample of the CSV File Showing About 10 Rows

数据库架构 Brief Synopsis of Desired Database, Trying to Get Date Columns to DateTime Data type

【问题讨论】:

The file has 1,048,576 files 真的吗? 如何将CSV filefiles 导入到SQL Server 中? 对不起,有一个错字。该表有 1,048,576 行。 我使用平面文件导入将文件从excel导入到sql server 技术上,CSV 不是Excel 文件。 Excel 恰好能够打开CSV 格式。您没有提供太多信息让我们帮助您。 1 如何将CSV 导入到SQL Server 的表中。 2 CSV 文件中的示例内容。 3 目标表架构。 4 确切的错误信息 【参考方案1】:
Function SQLDate(d)
SQLDate = WorksheetFunction.Text(d, "yyyy-mm-dd hh:MM:ss")
End Function

注意:“d”指的是日期字段。

或者,您可以将 Excel 数据转换为字符串:

TEXT(d,"dd mmmm yyyy hh:mm:ss")

然后转换为 req.从 SQL 内部。为了进一步明确这方面 - 请参阅下面的屏幕截图。

引用:感谢H Javed

【讨论】:

我收到一个错误,使用这个解决方案?你能定义你的变量 d 和 WorksheetFunction 吗?这些是由用户定义的吗?这是 VBA 函数还是 SQL 查询? for TEXT(d,"dd mmmm yyyy hh:mm:ss") - 这将在 excel 中,用于将日期字段数据转换为之前的函数 - 即在通过 SQL 导入之前.根据上下文,并且 d = 日期(假设您事先可以访问 Excel 数据并且可以根据需要进行操作。)请参阅更新后的帖子。让我知道是否需要进一步澄清。 PS- 你试过 SQL 代码了吗? 感谢您的澄清。我曾尝试在导入之前转换日期格式几次,但仍然收到错误。我再试试你的sql代码! 您收到什么错误?每个屏幕截图 - excel 公式没有任何问题,因此,如果此时(在 excel 中)收到错误,则应用公式的方式会出现问题。 RE: SQL 代码 - 你得到什么错误?你是这样定义“d”的吗? 我的 excel 正在运行,我的 sql 服务器是我出错的地方。我尝试将列转换为不同的日期格式,这似乎有所帮助。感谢您的帮助!

以上是关于将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 Excel 2013 批量导入到 TFS 时,如何将我的平面列表转换为树列表?

将 2 列或更多列从 Excel 导入 1 列 Access

从 MySQL 导入到 Excel 的 CSV 在日期结束时留下“/”

Matlab:将从excel导入的日期转换为可读格式?

将列从日期转换为日期时间

把excel导入sql server数据库日期类型变成科学计数法怎么办