3

我有一个 TSV,我正试图将其放入 mySQL 表中。有几列是时间格式,但它们与 的标准时间格式不匹配HH:MM:SS,而是看起来像HH:MM AM/PM

我已经看到使用 PHP 执行此操作的示例,但我希望有一种方法可以使用 mysqlstr_to_date

这是我到目前为止所做的工作。

LOAD DATA LOCAL INFILE 
'C:\\SINGLE_PROP\\open_houses.txt' 
REPLACE INTO TABLE singleprop.jos_openhouse 
IGNORE 1 LINES
SET OHSSTARTTM = STR_TO_DATE('%g:%i %a', '%g:%i:%s');

我不断收到不正确的时间格式错误。这是桌子的外观。

CREATE TABLE `jos_openhouse` (
  `OHSSTARTDT` DATE NOT NULL,
  `OHSHOSTBID` varchar(14) NOT NULL,
  `OHSMLSNO` int(7) NOT NULL,
  `OHSSTARTTM` TIME NOT NULL,
  `OHSENDTM'` TIME NOT NULL,
  `OHSREMARK` TEXT,
  `OHSTYPE` TEXT,
  `OHSUPDTDT` TIMESTAMP,
PRIMARY KEY (`OHSMLSNO`))
ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

是否应该先将列创建为“TEXT”,以便 infile 可以将数据放在那里,然后在导入后将其转换为时间格式?

4

2 回答 2

15

尝试这个:

SELECT STR_TO_DATE('11:15 PM', '%h:%i %p') ;

输出

TIME
--------
23:15:00

尝试这个:

LOAD DATA LOCAL INFILE 
'C:\\SINGLE_PROP\\open_houses.txt' 
REPLACE INTO TABLE singleprop.jos_openhouse (col1, col2, ..., @OHSSTARTTM)
IGNORE 1 LINES
SET OHSSTARTTM = STR_TO_DATE(@OHSSTARTTM, '%h:%i %p');
于 2013-01-16T17:24:49.057 回答
1
 SET OHSSTARTTM = STR_TO_DATE('%g:%i %a', '%g:%i:%s');

考虑

时间()

因为你使用时间

于 2013-01-16T17:23:20.690 回答