SQLite - 날짜와 시간
안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 SQLite에서 날짜와 시간의 fascineting 세상으로 뛰어들어 보겠습니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 많은 예제와 설명을 통해 여러분을 안내하겠습니다. 그러면 끈을 꽉 조이고 시작해 보겠습니다!
시간 문자열
SQLite에서 날짜와 시간은 일반적으로 텍스트 문자열로 저장됩니다. 초반에는 이상하게 느껴질 수 있지만, 사실 매우 유연하고 쉽게 다룰 수 있습니다. 몇 가지 일반적인 형식을 살펴보겠습니다.
ISO8601 형식
가장 일반적인 형식은 ISO8601로, 다음과 같습니다:
YYYY-MM-DD HH:MM:SS
예를 들어:
'2023-06-15 14:30:00'
이는 2023년 6월 15일 오후 2:30을 나타냅니다.
다른 허용된 형식
SQLite는 날짜와 시간 형식에 매우 관대합니다. 다른 허용된 형식을 몇 가지 소개합니다:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
예제를 시도해 보겠습니다:
CREATE TABLE events (
id INTEGER PRIMARY KEY,
event_name TEXT,
event_date TEXT
);
INSERT INTO events (event_name, event_date) VALUES
('Birthday Party', '2023-07-01'),
('Movie Night', '2023-07-15 20:00'),
('Morning Jog', '06:30');
SELECT * FROM events;
이렇게 하면 다양한 날짜와 시간 형식의 테이블이 생성됩니다. 꽤 멋진 일 아닙니까?
수정자
이제 수정자에 대해 이야기해 보겠습니다. 수정자는 날짜와 시간을 조작할 수 있는 특별한 키워드입니다. 이들은 시간 문자열의 마법의 지팡이와도 같습니다!
일반 수정자
다음은 일반적인 수정자 표입니다:
수정자 | 설명 |
---|---|
+N days |
날짜에 N일을 더합니다 |
-N days |
날짜에서 N일을 뺍니다 |
start of month |
날짜를 월의 첫날로 변경합니다 |
start of year |
날짜를 연의 첫날로 변경합니다 |
weekday N |
날짜를 주 N(0=일요일, 1=월요일, 등)에서 다음 날짜로 변경합니다 |
이제 이들을 실제로 사용해 보겠습니다:
SELECT
date('now') AS today,
date('now', '+1 day') AS tomorrow,
date('now', '-1 month') AS last_month,
date('now', 'start of month') AS month_start,
date('now', 'weekday 1') AS next_monday;
이 쿼리는 오늘의 날짜, 내일의 날짜, 한 달 전의 날짜, 현재 월의 시작일, 다음 월요일의 날짜를 보여줍니다. 매우 유용하죠?
포맷터
포맷터는 날짜와 시간의 스타일리스트와도 같습니다. 그들이 우리를 돕고 다양한 방식으로 날짜와 시간을 표시합니다.
strftime() 함수
포맷팅을 위한 주요 함수는 strftime()
입니다. 이 함수는 "string format time"을 의미합니다. 기본 문법은 다음과 같습니다:
strftime(format, time-string, modifiers...)
다음은 일반적인 형식 지시자입니다:
지시자 | 설명 |
---|---|
%Y |
연도 (4자리) |
%m |
월 (01-12) |
%d |
월의 날 (01-31) |
%H |
시 (00-23) |
%M |
분 (00-59) |
%S |
초 (00-59) |
%w |
주의 날 (0-6, 일요일=0) |
이제 모든 것을 합쳐 보겠습니다:
SELECT
strftime('%Y-%m-%d', 'now') AS date_only,
strftime('%H:%M', 'now') AS time_only,
strftime('%Y-%m-%d %H:%M:%S', 'now') AS date_time,
strftime('%w', 'now') AS day_of_week,
strftime('%Y-%m-%d', 'now', '+1 month') AS next_month;
이 쿼리는 현재 날짜, 현재 시간, 현재 날짜와 시간, 주의 날(0-6), 한 달 후의 날짜를 보여줍니다.
재미있는 예제
마지막으로 재미있는 예제를 하나 더 보여드리겠습니다. 당신이 파티를 계획하고, 100일 후에 어떤 요일인지 알고 싶다면:
SELECT
strftime('%Y-%m-%d', 'now', '+100 days') AS party_date,
CASE cast(strftime('%w', 'now', '+100 days') AS INTEGER)
WHEN 0 THEN 'Sunday'
WHEN 1 THEN 'Monday'
WHEN 2 THEN 'Tuesday'
WHEN 3 THEN 'Wednesday'
WHEN 4 THEN 'Thursday'
WHEN 5 THEN 'Friday'
WHEN 6 THEN 'Saturday'
END AS party_day;
이 쿼리는 100일 후의 날짜와 요일을 보여줍니다. 파티 계획에 완벽합니다!
그리고 여러분! 우리는 SQLite의 날짜와 시간의 땅을 여행했습니다. 연습이 완벽을 만들어 준다는 것을 기억하고, 이 함수들을 실험해 두시오. 당신은 곧 날짜와 시간의 마법사가 될 것입니다! 행복하게 코딩하세요!
Credits: Image by storyset