【问题标题】:Best way to store date from CSV file into SQL将日期从 CSV 文件存储到 SQL 的最佳方法
【发布时间】:2019-11-21 23:13:29
【问题描述】:

嘿,目前正在将 csv 文件转换为 SQL,并试图找出从我的 sql 文件中存储日期列的最佳方法。我需要能够在这样的特定日期内进行查询以获取记录的选择:

SELECT * 
FROM TABLENAME 
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'

我的 CSV 中每个日期的数据都存储为“MM/DD/YYYY hh:mm”,什么是转换此数据并将其插入 sql 列的最佳方法。我是否将该列设置为字符串列或 DateTime 列以便能够根据日期进行查询?将数据输入表格时是否只使用 convert() 函数?

我似乎无法找出最佳实践和方法,因为那里有很多相互矛盾的答案。任何简单的例子都会很有帮助。

提前致谢。

【问题讨论】:

  • 日期属于 DATETIME 列。否则,您无法对它们做任何有用的事情。如果它们不是 DATETIME 值,您将无法对它们进行正确排序、正确查询或对它们执行任何其他操作。有一个 DATETIME 数据类型是有原因的。自己测试一下 - 创建一个包含字符列的表,使用您的格式放入几十行,然后尝试对它们进行基于日期的查询(例如,跨越年份边界的日期之间的行)。
  • @KenWhite 看起来我的格式在日期时间中不起作用......当我插入例如 '10/11/1998 20:30' 时,它不会出现错误但显示为值为 0000-00-00 00:00:00 的记录。唯一的答案是将值预处理为正确的格式吗?
  • 那个值是一个字符串,需要转换成一个DATETIME。正如我之前提到的,如果您要在导入数据后使用它,那么这样做是绝对必要的。看起来您已经从@Chris 那里得到了解释如何在下面处理它的答案。
  • @KenWhite 听起来不错,我将编写一个快速脚本来进行转换。

标签: mysql sql csv date datetime


【解决方案1】:

如果您只需要将 CSV 数据导入 SQL 一次,那么我会先对日期格式进行一些操作。

您想以YYYY-MM-DD HH:MM:SS 格式获取日期。完成此操作后,将数据库中的列设为DATETIME

完成此操作后,您将能够运行如下查询:

SELECT * 
FROM TABLENAME 
WHERE DateColumnName >= '2011-04-12 12:00:00' AND DateColumnName <= '2011-05-25 03:53:04'

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多