2017-02-01 13 views
1

統計情報が一致するCSVファイルをphpMyAdminのデータベースにインポートしました。これらの列の一つが YYYY-MM-DD hh:mm:ssvarchar to datetime

としてフォーマットこれは、varchar型としてインポートが、私は19の長さ/値をDateTimeのためにphpMyAdminの中でそれを変更しようとすると、私は取得して、(Match_date_timeと呼ばれる)試合日時を開催しましたエラー#1426 - Too big precision 19 specified for column 'Match_date_time'. Maximum is 6

私は6に設定し、それは私が日時型にこの列を変更するにはどうすればよいYYYY-MM-DD hh:mm:ss.000000

として出てきますか?

+0

'alter table t modify column c datetime'。 –

答えて

1

MySQLの日付と時刻の精度は、書式設定された日付の合計長ではありません。これは、格納するマイクロ秒の精度です。 DATETIME(6)は、YYYY-MM-DD hh:mm:ss.000000を格納することを意味します。 DATETIME(0)は、マイクロ秒を格納しないことを意味します。YYYY-MM-DD hh:mm:ss

Fractional Seconds in Time Valuesを参照してください。

一般に、VARCHAR(100)のような列の制限を設定する必要はほとんどありません。これらは、データの制限を不必要にハードコードするための優れた方法です。ほとんどのカラムタイプは可変サイズなので、スペースを節約しません。既定値を使用し、のような可変サイズの種類を無制限に指定することをお勧めします。VARCHAR

しかし、マイクロ秒を保存するのが気になる場合は、MySQL(驚き、驚き)が標準に違反するため、マイクロ秒を指定する必要があります。 MySQLのデフォルトは0です.SQL標準のデフォルトは6です。マイクロ秒を気にしない場合は、そのままにしておいてください。いずれかの方法で列あたり数バイトです。

varchar列のデータがすでにISO 8601形式であり、そのように見える場合は、列をdatetimeに変更できます。

alter table sometable 
modify thatcolumn datetime 
+1

ありがとう、それは完全に働いた。また、DATETIME精度の説明に感謝します。 – darthspongebob