2017-11-16 13 views
0

私は、この "08.06.2017/10:20:46"のようなデータを持つ列を持っています。データ型は文字列です。私はタイムスタンプに変換したい。 CAST( "08.06.2017/10:20:46" AS TIMESTAMP)を試しましたが、動作しません。 変換するのを手伝ってもらえますか?私が試してみたこの文字列をタイムスタンプに変換する方法

STR_TO_DATE(string , format) 

は、あなたのケースでは Format specifiers

を見てみましょう: おかげ

MySQLの
+0

誰でもお手伝いできますか? – phalondon

+0

あなたはrbdmsを使用していますか? mysql? –

答えて

0

は、あなたがこのようにそれを呼び出す必要がありSTR_TO_DATE

と呼ばれる機能があり

STR_TO_DATE('08.06.2017/10:20:46','%d.%m.%Y/%H:%i:%s') 

編集:MySQLのものについて申し訳ありませんが、私はそれを削除したりしないようになってるかどうかを知りません...とにかく、インパラのために、これはあなたが始めることができます:

cast(unix_timestamp('08.06.2017/10:20:46', "dd.MM.yyyy/HH:mm:ss") as timestamp) 

鋳造がありますUNIX_TIMESTAMP関数はBIGINTを返すため、OracleのSQLについては

+0

あなたの助けに感謝します。 Unfornately SQL上のSQLはImpalaでは動作しません。 Impalaはmysqlではなく、別のSQL関数を使用します。 – phalondon

+0

私はいくつかのインパラの参考資料で私の答えを編集しました。私はあなたの問題についていくつかの光を当てたいと思っています:) –

+0

ありがとうございます。それは素晴らしいことです。 unix_timestampを使う理由を説明してください。私はこの関数はdatetimeでのみ動作すると思っていますが、今はStringで動作します。なぜdd.MM.yyyy/HH:mm:ssを使用する必要があるのでしょうか? – phalondon

0

次のように

使用TO_DATE関数を、(インパラ日時ファンクションの詳細については、一見hereを取る)

SELECT TO_DATE('08.06.2017/10:20:46','dd.mm.yyyy/hh:mi:ss') FROM DUAL;

これは、文字列は、この(DD.MM.YYYY/HH:MI:SS)であることを伝える日付の形式や日付列に変換し...日付が

0

ハイブとインパラのお得な情報同様の方法で。 unix_timestamp関数を使用して非標準の日付形式を受け入れ、次にfrom_unixtime関数を使用してタイムスタンプに変換する必要があります。以下のコードは、あなたの例のために動作するはずです。

SELECT from_unixtime(unix_timestamp('08.06.2017/10:20:46','dd.MM.yyyy/hh:mm:ss')); 
関連する問題