Menu
Coddy logo textTech

Handling Dates Part 3

CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 33/72。

SQLには、日付を操作したりフォーマットしたりするための便利な関数がいくつか用意されています。以下に、一般的な日付関数をいくつか紹介します。

  1. DATE() - 文字列を日付に変換します
  2. STRFTIME() - 指定されたパラメータに従って日付をフォーマットします
  3. DATE('now') - 現在の日付を取得します:

例えば、文字列を日付に変換します:

SELECT DATE('2023-05-15 13:45:00')
-- 戻り値: 2023-05-15

SELECT DATE('now')
-- 現在の日付を返します

例えば、日付から年、月、日を抽出します:

-- Get year
SELECT STRFTIME('%Y', '2023-05-15')
-- Returns: 2023

-- Get month
SELECT STRFTIME('%m', '2023-05-15')
-- Returns: 05

-- Get day
SELECT STRFTIME('%d', '2023-05-15')
-- Returns: 15

-- Show combination of year and day (any separator can be used)
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15

-- Use a dash separator instead
SELECT STRFTIME('%d-%m-%Y', '2023-05-15')
-- Returns: 15-05-2023

-- Get day of week
SELECT STRFTIME('%w', '2023-05-15')
-- Returns: 1 (Monday; Sunday is 0)

一般的な書式指定子:

  • %Y: 年 (4桁)
  • %m: 月 (01-12)
  • %d: 日 (01-31)
  • %w: 曜日 (0-6、日曜日は0)
  • %H: 時 (00-23)
  • %M: 分 (00-59)
  • %S: 秒 (00-59)

指定子の間には、任意の区切り文字を使用できます(例: -:/)。例えば、STRFTIME('%d-%m-%Y', date)STRFTIME('%d:%m:%Y', date) はどちらも日、月、年を組み合わせますが、区切り文字が異なるだけです。

これらの関数をクエリ内で組み合わせることができます:

-- 今年のすべてのレコードを検索する
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')
challenge icon

チャレンジ

簡単

利用可能なテーブルとカラム:

  • <strong>events</strong>: <strong>id</strong>, <strong>start</strong>, <strong>end</strong>

以下の内容を表示するクエリを記述してください:

  • イベントの ID
  • "DD-MM-YYYY" 形式でフォーマットされた開始日。このカラム名を formatted_start とします
  • "DD-MM-YYYY" 形式でフォーマットされた終了日。このカラム名を formatted_end とします
  • 開始日から終了日までの日数(期間)。最も近い整数に四捨五入してください。このカラム名を duration_days とします

start カラムの年が 2009 である行のみをフィルタリングしてください(STRFTIME() は数値ではなく文字列を返すことに注意してください)。

結果を期間(日数)の降順でソートしてください。

ヒント: 日付の差を計算するには JULIANDAY(end) - JULIANDAY(start) を使用し、整数に丸めるには ROUND() を使用します。

自分で試してみよう

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン