質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

Q&A

解決済

2回答

1207閲覧

bigquery:型変換

ttoo

総合スコア126

BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

0グッド

0クリップ

投稿2020/03/05 03:31

編集2020/03/05 03:47

SQL初心者です

~~省略~~ ①where yyyymm not like "%19901" ②where yyyymm not in ("198001", "198002", "198801") ~~省略~~ ・スキーマ yyyymm STRING NULLABLE

上記①と②はselectを実行時に指定したwhere句になります。
この時、①のクエリは成功したのですが、②は下記のエラーが出力されました。

Invalid date: ' 199-01-01'

2点ご質問です。


②で指定したnot in の中身の方の種類はどのDATE型になるのでしょうか?


1でDATEがたの場合、not in の中身をどのようにして、型変換の種類, またどのようにして型変換を行えばよろしいでしょうか?
cast関数などを利用するのかと思いますが、複数の型変換のやり方がわからなかったです。。。

ご回答のほどよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

標準 SQL の日時関数
使用例を含めてちゃんと見れば使い方が分かるかも?

投稿2020/03/05 04:02

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

日付型(Date)は年月日です。年月のみの日付型は持てません。
日を1日などで固定として年月として使用するのは可能です。

①も②も文字型で比較をしていますが、①がエラーにならないのは暗黙変換されているからだと思います。

基本比較の為には型を揃える必要があります。

in ("198001", "198002", "198801")

上記を優先するなら、日付を文字型に変換する必要があります。

FORMAT_DATE

SQL

1where FORMAT_DATE("%Y%m", yyyymm) not in ("198001", "198002", "198801")

日付型に合わせるなら、日が1日固定だとすると以下の様になります。
CAST

where yyyymm not in ( cast("1980-01-01" as date) , cast("1980-02-01" as date) , cast("1988-01-01" as date) )

記述は冗長ですけど、コストを考えると後者の方が良いかと思います。

投稿2020/03/05 04:21

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問