見出し画像

【SQL】dateadd関数の使い方とよくあるエラーを例文を用いて解説(練習問題あり)

dateadd関数を用いることで、すでにあるカラムに、時間や日数を加えたり減らすことができます。例えば日本はutc+9なので、標準時間から日本の時間にするには、dateaddを用いて日本時間に直す必要があります。またwhere条件にもdateaddを用いることができるために、そちらも紹介します。
そんなdateadd関数を、初心者でも理解しやすいよう、例題を用いて、徹底解説していきます。

dateadd関数の基本構文

dateaddは以下の構文で使用する。

dateadd ( 日付型 , 加える時間 , カラム名 )

この構文をSELECT または、 WHERE内で多く使われる関数だ。

例題は、以下のテーブルを用いる。

例題テーブル

時間カラムは、世界標準時間を用いているために、正確な計測時間を用いるには、dateaddを用いて修正する必要がある。

SELECT
 
dateadd(h,9,時間) as 日本時間,
 *
FROM
 ユーザーアクション

*(アスタリスク)は全カラムを抜き出す処理であり、
以下の結果を返すことができる。

dateadd関数の練習問題

練習問題を通じて、実践的にdateadd関数の用法を理解していく。

練習問題 : 「本日が2022-04-01だとして、『過去60日間のレコード』を全て抽出しなさい」

今回は、where文でdateadd関数を使うケースだ。
回答は以下である。

SELECT
 *
FROM
 ユーザーアクション
WHERE
 dateadd(d, -60, current_date)

current_dateとは、「現在の時刻」であり、

dateadd(d, -60, current_date)

によって、「過去60日間」になる。
結果は以下のように抽出される。

練習問題2 : 「『日付ごとの来訪ユーザー数』を計測しなさい。」

今回は、dateaddとcount文を用いた練習問題だ。

count文の復習はこちら👇

回答は以下である。

SELECT
 dateadd(h, -9, 時間) :: date as dt,
 count(distinct user_id)
FROM
 ユーザーアクション
group by
 dt

結果は以下のように抽出される。

::date と書くことで、時刻カラムを日付に変換できる。

また今回は、ユーザー数の計測のため、重複のないようcount distinctを用いる必要がある点も注意してもらいたい。

dateadd関数でよくあるエラーと解消法

dateadd関数でよく起こるエラーと、その解消法を解説していく。

日付型を間違えるケース

dateadd関数では、日付型にルールがある。
日の場合は、「d」、月は「m」、週は「ww」、年は「yyyy」というように指定する必要がある。

「day」や「minute」と記載するのが無難ではあるので、dateadd関数を用いる際は、ぜひ意識してもらいたい。

最後に自己紹介

はじめまして、ニューズピックス(https://newspicks.com/)でマーケターをしている平野佑樹です。
普段は、JobPicksというジョブ型キャリアを支援するWebサービス(https://job.newspicks.com/)を運営しており、

  • SQLやGoogle Analyticsを用いた分析

  • TwitterをはじめとしたSNS運用(ショート動画にも挑戦予定)

  • メールマガジン運用

  • Google Optimizeなどを用いたA/Bテスト

  • Search Consoleを用いてコンテンツSEOや開発に関わるSEO施策

など、業務を担当してきました。
マーケターの業務を後押しするtipsをnoteにて発信しております。
(ぜひ、いいねや拡散お願いいたします🙇)

ぜひ、フォローや興味持っていただいた方は、(https://twitter.com/enterrocken)にDMいただけますと幸いです!

この記事が気に入ったらサポートをしてみませんか?