如何将CSV数据加载到MYSQL中以获得24HR格式的TIME数据类型

dced5bon  于 2023-03-22  发布在  Mysql
关注(0)|答案(1)|浏览(141)

我试图将数据从csv文件加载到MYSQL中。csv表中的一列包含与时间相关的数据。该数据存储在标题为Issue_Time的列中,时间值为07:30A和01:35P,其中A和P表示AM和PM。我遇到的问题是,我无法以一种格式将数据加载到MYSQL中,在这种格式中,我可以将AM和PM时间作为TIME数据类型或以24小时格式获取。
我第一次尝试使用TIME数据类型在MYSQL中加载数据。

SET @@SESSION.sql_mode='ALLOW_INVALID_DATES';

当数据加载时,数据被转换为时间格式,时间为07:30:00和01:35:00。问题是AM和PM不再表示。因此,我现在只有00:00:00和12:59:00之间的时间。我试图使用代码将其转换为24Hr格式

UPDATE my_table SET Issue_Time = TIME_FORMAT(Issue_Time, '%H:%i:%s')

但这并不奏效。
我还尝试先将数据作为VARCHAR(255)加载,然后使用

UPDATE my_table SET Issue_Time = STR_TO_DATE(Issue_Time, '%H:%i%p')

这导致加载了一列NULL值。
有人能帮我把数据以24小时的时间格式(如13:35:00)或以一种形式,我将能够告诉时间上午从下午?谢谢。

q0qdq0h2

q0qdq0h21#

假设您使用LOAD DATA INFILE导入CSV,您可以使用Input Preprocessing通过STR_TO_DATE()格式化传入的时间值。由于时间之后只有AP,我们将使用CONCAT()添加缺失的M。我们不知道您的文件或表的结构,因此下面是一个示例:

LOAD DATA INFILE 'data.csv' INTO TABLE my_table
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
    (id, name, @time)
    SET Issue_Time = STR_TO_DATE(CONCAT(@time, 'M'), '%h:%i%p')

相关问题