【发布时间】: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