3

mySQLテーブルにインファイルしようとしているTSVがあります。いくつかの列は時間形式ですが、の標準時間形式とは一致しませんHH:MM:SS。代わりに、次のようになります。HH:MM AM/PM

PHPでこれを行う例を見てきましたが、mysqlでこれを行う方法があることを望んでいましたstr_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;

infileがデータをそこに配置できるように、最初に列を「TEXT」として作成し、インポート後に時間形式に変換する必要がありますか?

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 に答える