C.W.K.
Stream
Lesson 10 of 10 · published

날짜와 시간 함수

~14 min · sql, dates, functions

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

날짜 함수 5 개와 modifier

SQLite 에 날짜/시간 함수 5 개, 모두 같은 modifier set 받아 (산술용). Modifier 외워. 함수는 쉬워.

  • date(time, modifiers...) — YYYY-MM-DD 반환.
  • time(time, modifiers...) — HH:MM:SS 반환.
  • datetime(time, modifiers...) — YYYY-MM-DD HH:MM:SS 반환.
  • julianday(time, modifiers...) — Julian day REAL.
  • strftime(format, time, modifiers...) — 커스텀 format.
  • unixepoch(time, modifiers...) (3.38+) — 1970 이후 초.

유용한 modifier:

  • '+N days', '-N hours', '+N minutes' 등.
  • 'start of month', 'start of year', 'start of day'.
  • 'weekday N' 0=일, 6=토 — 다음 weekday N 으로 이동.
  • 'localtime', 'utc' — 타임존 shift.
Tip: datetime('now') 는 항상 UTC 반환. Local time 저장하면 offset 도 같이 저장하거나 write time 에 UTC 변환. 타임존 섞인 컬럼은 영구 버그 원천.

Code

흔한 날짜 query·sql
-- 어제
SELECT date('now', '-1 day');

-- 이번 달 시작
SELECT date('now', 'start of month');

-- 다음 월요일
SELECT date('now', 'weekday 1');

-- 기존 컬럼 포맷
SELECT strftime('%Y-%m', created_at) AS year_month, count(*)
FROM   messages GROUP BY year_month ORDER BY year_month;

-- 최근 7 일 활동
SELECT * FROM messages
WHERE  created_at >= datetime('now', '-7 days');

-- text -> epoch -> text round-trip
SELECT datetime(unixepoch('2026-05-03 12:00:00'), 'unixepoch');

External links

Exercise

messages 테이블에서 날짜 query 5 개: (1) 오늘 message, (2) 이번 calendar 주, (3) 최근 6 개월 per-month count, (4) message 보낸 시간대 중앙값 (합리적 정의), (5) 한 conversation 안 연속 message 사이 가장 긴 gap. Built-in 날짜 함수만 사용.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.