DB

BigQueryでdate型のカラムをbetween等で比較する方法

BigQueryでdate型のカラムをbetween等で比較する方法

date型のカラムに対してbetween等の比較演算子を使って範囲を絞りたい。

データベース(DB)に日付データを格納していたら出てきそうな要望である。

GoogleのBigQuery(通称「BQ」)はデータ分析によく使われるが、同じように日付のフィルタをかけたい場合があるだろう。

しかしここで問題が出てくる。
date型はDBによって扱い方が異なる。

同じ事をしたくてもSQLの書き方がDB毎に違うのだ。

なので今回は「BigQueryでdate型のカラムをbetween等で比較する方法」を解説する。

この記事を書いている人


システムエンジニア、AIエンジニアと、IT業界で10年以上働いている中堅。PythonとSQLが得意。最近GCP環境を習得中。

記事を読むメリット

  • BigQueryでdate型のカラムをbetween等で比較する方法がわかる

  • BigQueryでdate型のカラムをbetween等で比較する方法

    BigQueryでdate型のカラムをbetween等で比較する方法

    BigQueryでdate型のカラムをbetween等で比較する方法は簡単だ。

    そのまま日付の文字列と比較すればいい。

    select * from dataset_name.table_name
    where date_column between "2020-09-01" and "2020-10-01"
    



    以前はDATE関数を使う必要があった?

    以前はdate型と文字列の比較はエラーになっていて、DATE関数で変換する必要があったという記述もある。

    NGパターン

    SELECT * FROM dataset.table_name WHERE Date = "2016-07-11"
    Argument type mismatch in function EQUAL:
    'Date' is type int32, '2016-07-11' is type string
    


    OKパターン

    SELECT * FROM dataset.table_name  WHERE DATE(Date) = "2016-07-11"
    


    ただベストアンサーを見ると、エラー原因は「予約語をカラム名に使用しているから」とされており、予約語を使っていなければDATEでの変換も不要とのこと。



    他のDBでは

    BQではdate型は文字列で比較できたが、他のDBではどうだろうか。

    MySQLは以前書いたように文字列の方が相性良いんだよね
    なんだ。じゃあ簡単じゃん
    BQやMySQLは簡単に済んだけど、他のDBだと面倒だったりするんですよ



    では別のDBではどうなのだろうか。

    Oracleだと「to_date関数を使え」って書いてあるし
    select sysdate from dual
    where sysdate between to_date('2020-09-01', 'yyyy-mm-dd') and to_date('2020-10-11', 'yyyy-mm-dd')
    
    oracle sql developer


    ほんとだ、to_date関数使ってるね
    でも文字列でもいけるんじゃないの?
    ははっ、そんなまさか・・・
    select sysdate from dual
    where sysdate between '2020-09-01' and '2020-10-11'
    
    oracle sql developer
    ・・・
    ・・・
    文字列との比較、いけちゃってるなぁ
    全部文字列比較でいいんじゃん!
    いつの間にか便利になっている・・・



    BigQueryでdate型のカラムをbetween等で比較する方法 まとめ

    BigQueryでdate型のカラムをbetween等で比較する方法は、"2020-10-05"のような日付フォーマットの文字列と比較すればよい

    MySQLも同様だが、Oracleもシングルクオートを使って'2020-10-05'のような文字列と比較できる。

    結論としては、全部日付フォーマットの文字列との比較でよかった



    他にもgsutilのエラーや、スプレッドシートなどのGSuiteのサービスでデータが更新できない場合の記事などがあるので、気になったら見て欲しい。

    ITipsと同じようなブログを作る方法

    ブログに興味がありますか?

    もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

    サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
    同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

    ランキング参加中

    にほんブログ村 IT技術ブログへ

    他にもブログやSNSで紹介してくれると励みになります。

    はてブのコメントで酷評されると泣きます(´;ω;`)

    -DB
    -, ,

    Translate »

    © 2021 ITips