データベースにおいては、カラムごとに格納されるデータの型があらかじめ決められています。データの型は、データの性質や値の種類を表すための仕組みです。一般的なデータベースのデータ型のいくつかについて紹介します。
基本的なデータの型一覧
文字列型
文字列型は文字やテキストを格納するためのデータ型です。
文字列型にはSTRING型とBYTES型の2種類があります。
STRING型は可変長文字データであり、全ての関数はUnicode文字として処理されます。
BYTES型は可変長文字バイナリデータであり、RAWバイトを操作するため、関数の結果としてバイト数が返ります。

数字をこの型で入力すると、数としてではなく文字として認識されるため、数値同士で計算するといった操作ができません!計算を行いたい場合は、次に紹介する“数値型”で入力するようにしてください。
数値型
数値型は数値を格納するためのデータ型です。
数値型は数値が小数点を含むかどうかなどによってINTEGER型、FLOAT型、NUMERIC型、BIGNUMERIC型の4種類のデータ型に分けられます。
それぞれの特徴については下図の通りになります。

INTEGER型は整数を格納することができるデータ型です。
幅広い数値を扱うことができますが、小数点を含むデータは扱うことができないため、数量などの小数点が発生しない数値を扱う際に適しているデータ型です。
FLOAT型は倍精度浮動小数点数の近似値を格納することができるデータ型です。
つまり、FLOAT型では小数点を含む値を格納することができます。そのため、気温や湿度、距離等のデータを格納する時に用いられます。
ただし、FLOAT型は近似小数値を表すため、絶対的な正確性を持ったデータではないことに注意してください。
NUMERIC型は小数点を含む数値を格納できる正確な数値データ型です。
FLOAT型と異なり、誤差が生じない正確な数値を表すことができます。そのため、財務データなどのお金に関係するデータを扱う際に適しています。
BIGNUMERIC型はNUMERIC型よりも大きな数値を格納できるデータ型です。
BIGNUMERIC型では、NUMERIC型の最大値では扱うことができないような大きな数値を正確に表したい場合に利用できます。大規模な金融取引等がある場合に適しています。
日付/時間型
日付や時間を格納するためのデータ型です。
日付/時間型のデータ型はTIMESTAMP、DATE、DATETIME、TIMEの4種類になります。
それぞれの特徴については下図の通りになります。

TIMESTAMP型は絶対的な時刻(UTC)を表すデータ型です。
TIMESTAMP型を使うと、例えば「2024年1月1日9時00分00秒」が「2024-01-01-09:00:00」のように表示されます。
TIMESTAMP型のタイムゾーン(*)は基本的にUTC(協定世界時)で表されますが、他のタイムゾーンを指定することも可能です。
また、BigqueryのデフォルトのタイムゾーンはUTCであるため、アップロードするデータのタイムゾーンに注意する必要があります。
*タイムゾーン:共通の標準時を使う地域や区分のこと
世界の基準となる時刻を協定世界時(UTC)と呼び、各地域のタイムゾーンの時刻はUTCとの時差で定義されています。日本では協定世界時(UTC)に9時間を足した「日本標準時」(JST)が使われています。
DATE型は日付を表すデータ型です。
表にあるように、「2024-01-01」という形で日付のみが表示されます。
日付だけのデータで済む場合に用いられるため、DATE型はよく用いられます。
DATETIME型は日付と時刻を表すデータ型です。
前述のTIMESTAMP型との違いは、データにタイムゾーンを持つかどうかになります。
図にあるように、TIMESTAMP型では末尾にUTCが含まれるのに対し、DATETIME型ではUTCを含まず、時刻の前に「T」が含まれます。
そのため、DATETIME型ではどのタイムゾーンの時間であるかを示していないことになります。
TIME型は時刻を表すデータ型です。
特定の日付とは関係がなく、ただ時刻のみを表しています。
TIME型もTIMESTAMP型と同様にタイムゾーンを持たないデータ型になります。
日付/時間型のデータ型を扱う上で、関数に対応するデータ型を使わなければならないという注意点があります。
例として、DATE_DIFF関数にDATETIME型のデータを用いて実行しようとするとエラーになってしまいます。
DATETIME型のデータには日付を表すデータも含まれていますが、DATE_DIFF関数はDATE型のデータでなければ対応できません。
日付/時間型に限らず、関数ごとに対応するデータ型があるため、適切なデータ型を使うようにしましょう。
その他のデータ型
他のデータ型として、BOOLEAN型やRECORD型があります。
BOOLEAN(ブール)型は真偽値(真または偽)を格納するためのデータ型です。
BOOLEAN型にはTRUEまたはFALSEの2つの値のみを持ちます。
RECORD型は複数の値を格納することができるデータ型です。
RECORD型については、格納するデータの種類によって扱い方が異なってくるため、Bigqueryのサポートページをご参照ください。