【问题标题】:How to automatically convert timezone while loading into MySQL如何在加载到 MySQL 时自动转换时区
【发布时间】:2019-10-20 05:58:59
【问题描述】:

我正在尝试在 MySQL 中加载具有 DATETIME 数据类型的表。源是一个 csv 文件,它具有 UTC 值。有没有一种方法可以让我在加载数据时自动将它们转换为 EST。

我在 AWS 中使用“从 S3 加载数据”将数据加载到 Aurora Mysql。

以下是一列的示例。

 birth_dt in UTC     =+ birth_dt in table as EST
 =+=+=+=+=+=+=+=+=+  =+=+=+=+=+=+=+=+=+=+=+=+=+=+
1990-09-20 23:00:00  =+   1990-09-20 19:00:00
 =+=+=+=+=+=+=+=+=+  =+=+=+=+=+=+=+=+=+=+=+=+=+ ```

【问题讨论】:

  • 以表格格式分享一些示例数据和预期结果。
  • 用样本和预期数据更新了问题。抱歉编辑,因为我是stackoverflow的新手。
  • 您可以在这里分享您之前上传的load data local infile... 查询吗?

标签: mysql csv datetime


【解决方案1】:

在直接插入到临时变量中的列存储之前,然后转换为“EST”并插入。

这是示例加载文件,使用 set 行并根据您的表和列名称进行更改。

LOAD DATA LOCAL INFILE 'path of csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n'
(col1,col2,....,@utc)
SET date_column = CONVERT_TZ(@utc,'+0:00','-5:00');

【讨论】:

  • 谢谢。我会试试这个。但是,我在 create table 语句中寻找更多的选项,它会自动转换。
  • 您说导入将来自 csv 对吧?那么如果直接添加insert或者其他方法会怎样呢?
  • 是的。我正在从 csv 导入。这是一个现有代码,我们在 7 个表中有近 50 个日期时间列。因此,与其去编辑所有的代码,不如只考虑修改 DDL。
  • 您是要更改表中的日期时间(现有)还是需要在导入时更改(新)?说清楚
  • 我正在尝试在将新数据导入表时进行更改。但不是通过更改现有代码。有没有办法可以在表格的 DDL 中提及?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-07
  • 2016-09-18
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
相关资源
最近更新 更多