10

MySQLデータベースに「2011年9月13日17:16:28PDT」という形式のタイムスタンプがあります。データベース内のフィールドのタイプはVARCHARです。このVARCHARをMySQLのタイプTIMESTAMPのフィールドに変換したいと思います。

string_to_time関数を使用するなど、このサイトの他の場所で提案されているいくつかの解決策を試しましたが、これらの解決策はすべて、異なるタイプのタイムスタンプから始まります。

データを日付で並べ替えることができるように、上記のVARCHARタイムスタンプをMySQLによって認識されるTIMESTAMPに変換するにはどうすればよいですか?

4

2 に答える 2

7

これは、MySQLのSTR_TO_DATE関数を使用して行うことができます。これを試してください。

SELECT STR_TO_DATE("17:16:28 Sep 13, 2011 PDT", '%H:%i:%s %b %d, %Y PDT');

編集:

SELECT STR_TO_DATE(field_name, '%H:%i:%s %b %d, %Y PDT') AS new_time
FROM table_name;
于 2012-10-17T11:31:17.443 に答える
2

次の形式でstr_to_dateを使用します。

select unix_timestamp(str_to_date("17:16:28 Sep 13, 2011 PDT","%T %b %d, %Y PDT"));

日の部分(例:13)が01、02などとして表されていない場合。ただし、1桁の場合は、1、2、3の場合は、%dを%eに変更します。

タイムゾーンは認識されないので注意してください。これはフォーマット用の文字列リテラルにすぎません。レコードごとにタイムゾーンが異なる場合は、convert_tz()関数を使用して適切なタイムスタンプを取得する必要があります。

于 2012-10-17T11:36:18.050 に答える