2012-06-29 59 views
0

我正在創建一個mySQL數據庫,它將包含數據的一部分,時間戳。這些時間戳將從CSV文件中導入,它們以這種方式出現 - 20110701083231從CSV導入14位數字時間戳到MySQL並避免剝離數據

我的問題是哪個是最好的數據類型來將它們存儲爲?

在我的努力,到目前爲止,在導入過程中(這我通過PHPMyAdmin的做)出現在時間戳的結束得到剝離出來,他們就成爲2011070000000.

奇怪的是,當我回到CSV文件,那裏的參賽作品也似乎以同樣的方式被剝離出來......?

在此先感謝您提供的任何燈光以及之前提供的所有幫助。

+0

如果你解釋了你所做的確實是有幫助的。你用什麼數據類型試過了? – fancyPants

+0

@tombom,公平點。我剛剛嘗試過一個測試文件 - 它包含跨3個字段重複的20110701090833。我在mysql中有一個匹配的表來接收它。第一個字段是varchar(20),第二個是日期時間,第三個是bigint(20)。導入後第一列包含'2.01107E + 13',第二'2002-01-10 07:00:00'和第三'20110700000000'。在重新打開CSV文件時,它現在在每個字段中都包含20110700000000 ... – highfidelity

回答

2

有這個說法一試?

LOAD DATA INFILE 'yourFile.csv' 
INTO TABLE yourTable 
(@var1) 
SET theColumnWhereItShouldBe = STR_TO_DATE(@var1, '%Y%m%d%H%i%s'); 

哦,並且列應爲datetime類型或timestamp的。

+0

謝謝。剛試過這兩個不同的領域 - 一個日期時間和一個時間戳。日期時間包含格式良好的0000-00-00 00:00:00和時間戳當前的日期和時間。 – highfidelity

+0

你的意思是它適用於時間戳嗎?仍然奇怪,它不適用於日期時間。 – fancyPants

+0

更新 - 成功(我認爲)。我嘗試將excel中的CSV文件中的字段格式化爲遠離其一般字段的數字字段,並且這與上面的代碼組合在一起已將正確的日期和時間上載到日期時間類型列。這似乎是一個恥辱,不得不重新格式化CSV文件,雖然... – highfidelity

1

將它們保存爲datetime格式。這意味着你將需要保存之前做的那些值的一些格式,但是,是不是很難做:

$date = DateTime::createFromFormat("YmdHis", "20110701083231"); 
$date = $date->format("Y-m-d H:i:s"); 
+0

感謝您的支持。我目前通過PHPmyadmin導入,所以我沒有選擇作爲導入的一部分進行格式化 - 是嗎?在這種情況下,我應該切換到通過一個自定義的PHP頁面導入,我可以,我假設,使用上面的代碼? – highfidelity