2016-08-19 5 views
1

私は大きなテーブルを持っています。大きなCSVファイルからインポートしました。strの形式がdd/mm/yyyyのときに、列の型をstrからdateに変換するにはどうすればよいですか?

カラムに、フォーマットdd/mm/yyyyの日付情報が含まれていると、strとして認識されます。

私はselect TO_DATE('12/31/2015') as dateを試しましたが、TO_DATE機能にはyyyy-mm-dd形式が必要なため動作しません。

'12/31/2015 'の文字列を'2015-12-31'の形式に再整理して、列の型を日付に変換できるようにするにはどうすればよいですか?

SQLのupdateキーワードがサポートされていないような非常に大きなデータサイズのため、sparkSQL(databricks環境)でこれを実行しています。

答えて

2

質問を再読してください。

私はこれをお勧め:

UPDATE table 
SET column = Convert(varchar(10), Convert(smalldatetime, column, 103), 120) 

これは英国のフォーマット(DD/MM/YYYY)、次いで120フォーマットを使用して、バックVARCHARに変換を使用して、SMALLDATETIMEする列値を変換する(YYYY- mm-dd)。 120形式には時間情報が含まれていますが、これはvarchar(10)としてキャストされているため切り捨てられます。

テストそれ:

SELECT Convert(varchar(10), Convert(smalldatetime, column, 103), 120) 
FROM table 
+0

ありがとうございました。これは前もって明確にしていないので、公正な質問ではありません。更新コマンドはsparkSQLではサポートされていないようです。 (私は間違っている可能性があります)このシナリオのアドバイスですか? – Semihcan

+0

私はテストステートメントを試して、次のエラーを受け取りました:SQLステートメントのエラー:AnalysisException: 'varchar'( '' 10 '関数の仕様での入力を認識できません、行1 pos 15 – Semihcan

+1

こんにちはSemihcan、私は自分のPCで書いたステートメントと問題はないので、プラットフォームの互換性の問題だと思っています;私はあなたのタグをチェックして、私はまっすぐSQLを使っている間あなたはapache-spark-謝罪私はもう助けることができないかもしれません。 –

関連する問題