2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【GoogleBigQueryTips】standardSQLで、秒・ミリ秒・マイクロ秒タイムスタンプを->日付に変換する..他

Last updated at Posted at 2018-08-01

はじめに

タイムスタンプを日付に変換するというのは、分析をしているとしょっちゅう使うクエリではあるのものの、毎回忘れてしまうのでこちらに残しておきます。

特に、FirebaseAnalyticsから、BigQueryにデータをエクスポートしている場合には、"初めてアプリを開いた日"がミリ秒のタイムスタンプとして保持されているので、ユーザー分析を行う上で以下の変換を行うことは良くあるかと思います。

ご参考までに!

秒 --> 日付に変換

EXTRACT(DATE FROM TIMESTAMP_SECONDS("タイムスタンプ[秒]") AT TIME ZONE 'Asia/Tokyo') AS date
```

## ミリ秒 --> 日付に変換
```sql:
EXTRACT(DATE FROM TIMESTAMP_MILLIS("タイムスタンプ[ミリ秒]") AT TIME ZONE 'Asia/Tokyo') AS date
```

## マイクロ秒 --> 日付に変換
```sql:
EXTRACT(DATE FROM TIMESTAMP_MICROS("タイムスタンプ[マイクロ秒]") AT TIME ZONE 'Asia/Tokyo') AS date
```

## おまけ
## UTCタイムスタンプ -->  時間帯を抽出
```sql:
FORMAT_TIMESTAMP("%H", timestamp, 'Asia/Tokyo') as hour
```

## UTCタイムスタンプ -->   週を抽出
```sql:
EXTRACT(DAYOFWEEK FROM date(timestamp, 'Asia/Tokyo')) as week
```

##  FROM句で○○日前を指定
```sql:
FROM XXX
WHERE
 _TABLE_SUFFIX BETWEEN REPLACE(CAST(DATE_SUB(CURRENT_DATE, INTERVAL 8 day) AS string), '-', '')
  AND REPLACE(CAST(DATE_SUB(CURRENT_DATE, INTERVAL 1 day) AS string), '-', '')
```
##  timestampと本日との差分を抽出する
*以下は、年変換する事で年齢を抽出

```sql:
ROUND(TIMESTAMP_DIFF(CURRENT_TIMESTAMP(),birthday,DAY)/365,0) as AGE
```
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?