2013-01-16 71 views
3

我有一個TSV,我試圖將其插入到mySQL表中。幾列是時間格式,但它們不符合HH:MM:SS的標準時間格式,而是它們看起來像HH:MM AM/PMmysql infile將字符串轉換爲時間格式

我見過用PHP做這個的例子,但我希望有一種方法可以做with with 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可以把數據存在,然後它轉換成時間格式,它已經導入後?

+0

您應該只創建'的東西,可以不適合在'VARCHAR'列,例如東西都是超過255個字符長TEXT'列。這麼久的日期肯定是無效的。 – tadman

+0

備註是charcter長度爲500的描述;) – Plummer

+0

您可以在更新版本的MySQL中始終聲明'VARCHAR(512)'。由於'TEXT'列存儲在數據庫的一個單獨的blob區域,因此它們的性能通常很差。 'VARCHAR'存儲在行本身中。 – tadman

回答

10

試試這個:

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

OUTPUT

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'); 
+0

因此,即使每個條目的字符串值不同,我也必須放入字符串的內容。 – Plummer

+0

你已經用11:15 PM –

+0

NM更改了文本文件的列名,現在我看到語法了。 – Plummer

2
SET OHSSTARTTM = STR_TO_DATE('%g:%i %a', '%g:%i:%s'); 

考慮

TIME()

因爲üusingtime

+0

這是否存在?我沒有在mySQL手冊中看到它。 – Plummer

+0

更新了我的回答 –

+0

嘗試將字符串更改爲TIME格式。不是我在找什麼,但謝謝! – Plummer

相關問題