SQLφ(..)メモメモ5 日付型の演算

SQLφ(..)メモメモ5 日付型の演算

日付、日時に関する関数DATE(),DATETIME() DATE(DATETIME型)データを作成したり、型変換を行います

基本の入れ方はDATE(年,月,日)DATETIME(年,月,日,時,分,秒)で入れられる。別なカラムに年月日がバラバラに入ってるときに便利。

日付は’2021-06-09’のように-でつなげて’で囲むことは注意。

SELECT
DATE(年,月,日) AS DATE
;
みたいな感じ。
DATE(timestamp)などで年月日時間も入ったデーターを年月日のみにすることもできる

CURRENT_DATE(),CURRENT_DATETIME()は現在時刻を表示だけど、日本は時差があるからCURRENT_DATETIME(‘+09:00’)と表現するCURRENT_DATETIME(‘Asia/Tokyo’)もありだよ(‘ASIA/TOKYO’)はだめみたい。

加算 DATE_ADD (日付,interval 足したい値 デイトパート)DATETIME_ADDは時間ね。マイナスもつかえるからDATE_SUBと同じことはマイナスでもできる
なので減算 DATE_SUB() DATETIME_SUB()の説明は割愛。

2つの時間の差 DATE_DIFF(引かれる日付A,引く日付B,差分をしりたいデイトパート)
DATETIME_DIFFは時間ね。
日時・時間を切り詰める DATE_TRUNC DATETIME_TRUNC
DATE_TRANCではYEAR QUATER MONTH WEEK がデイトパートでつかえ、DATETIME_TRUNCではDAY,HOUR,MINUTE,SECONDが使える
日時・時間のフォーマットを変更する FORMAT_DATE FORMATTIME_DATE(フォーマット指定文字列,日時列)
フォーマット指定文字列はたくさんあって大文字小文字で意味が違う。大文字はUpper 小文字はLowerの意味。

MAX() MIN()最大最小の値を出す

デイトパートはDATEの場合は year quarter month week day
DATETIMEの場合は上記に加え (hour,minute,second,millisecond,microsecoond)が使える

あとDistinct忘れとった。重複した数をカウントしないことね。使い方は
COUNT(DISTINCT 列 )

最初にやったのになー

Having とWhereの違い

やってくうちにわからなくなって再確認。違いは呼ばれるタイミング
FROM WHERE GROUPBY HAVING SELECT ORDERBYという順番だから同じ結果が帰ってくるようだ。

あと、COUNT関数はWhereでは使えないみたい。