【问题标题】:MySQL time duration format, import from CSVMySQL 持续时间格式,从 CSV 导入
【发布时间】:2022-01-03 08:57:14
【问题描述】:

怎么了?

  • 创建了一个新列(在 Excel 中)用于计算持续时间

    • 使用公式从 2 个单元格中减去值
    • 例如:2021-01-01 07:30 - 2021-01-01 07:00; Duration = 00:30:00
  • 在MySQL表中,我将列的数据类型设置为TIME,但是导入时会返回错误

    • 错误信息:'Error Code: 1292. Incorrect datetime value: '00:13:00 ' for column 'ride_length'

我尝试过的:

  • 将数据类型更改为DATETIMEINTTIME -> 无效
  • 在 CSV 中将数据格式更改为 HH:MM:SSHHMMSS、'YYYY-MM-dd HH:MM:SS' -> 无效

问题

  • 我应该在 MySQL 中设置什么样的data type
  • 如果是 CSV 文件的问题,我需要设置什么样的“数据格式”?

非常感谢

【问题讨论】:

  • 你能举一个不工作数据的例子,以及你正在使用的代码吗?
  • 提供完整的 CREATE TABLE 脚本、CSV 文件内容(2-3 行)和用于导入的 SQL 查询。一般TIME数据导入没有问题。

标签: mysql excel csv sqldatatypes


【解决方案1】:

实际上,您可能更容易只导入两个日期时间值,然后在 MySQL 中使用 TIMSTAMPDIFF

SELECT TIMESTAMPDIFF(MINUTE, '2021-01-01 07:00:00', '2021-01-01 07:30:00')
-- 30

请注意,由于差异实际上是一个计算量,因此通常在您选择时计算它更有意义。这样,如果稍后更新两个值之一,您不必担心维护差异列。

【讨论】:

  • 感谢蒂姆的解释和建议! SQL中是否有可以像Excel一样减去的函数(逐个单元格),我在数据集中有超过200,000行.....可能是一个愚蠢的问题,这里的SQL新手
  • SQL 查询是基于集合的操作。我的答案中的查询将一次性处理您的所有数据。
猜你喜欢
  • 2019-10-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
相关资源
最近更新 更多