Handling Dates Part 3
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 33/72。
SQL には、日付を操作およびフォーマットするためのいくつかの便利な関数が用意されています。以下は一般的な日付関数です:
DATE()- 文字列を日付に変換しますSTRFTIME()- 指定されたパラメータに従って日付をフォーマットしますDATE('now')- 現在の日付を取得します:
たとえば、文字列を日付に変換する場合:
SELECT DATE('2023-05-15 13:45:00')
-- Returns: 2023-05-15
SELECT DATE('now')
-- Returns current dateたとえば、日付から年、月、日を抽出する例:
-- 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) はどちらも日、月、年を組み合わせています — 区切り文字が異なるだけです。
これらの関数をクエリ内で組み合わせることができます:
-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')チャレンジ
簡単利用可能なテーブルと列:
<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() は文字列を返し、数値ではありません)。
結果を duration_days の降順でソートします。
リマインダー:日付の差を計算するには JULIANDAY(end) - JULIANDAY(start) を使用し、ROUND() で整数に丸めます。
チートシート
SQLは、日付を操作およびフォーマットするためのいくつかの便利な関数を提供します:
DATE()- 文字列を日付に変換しますSTRFTIME()- 指定されたパラメータに従って日付をフォーマットしますDATE('now')- 現在の日付を取得します
文字列を日付に変換:
SELECT DATE('2023-05-15 13:45:00')
-- Returns: 2023-05-15
SELECT DATE('now')
-- Returns current dateSTRFTIME() を使用して日付の部分を抽出:
-- 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
SELECT STRFTIME('%Y:%d', '2023-05-15')
-- Returns: 2023:15一般的なフォーマット指定子:
- %Y: 年(4桁)
- %m: 月(01-12)
- %d: 月の日(01-31)
- %H: 時(00-23)
- %M: 分(00-59)
- %S: 秒(00-59)
WHERE句で使用:
-- Find all records from current year
SELECT * FROM table1
WHERE STRFTIME('%Y', date_column) = STRFTIME('%Y', 'now')JULIANDAY() を使用して日付の差を計算:
JULIANDAY(end_date) - JULIANDAY(start_date)自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns