[SQLite] 날짜와 시간 관련 함수
SQLite에서 날짜와 시간을 다루는 함수들은 다양한 형식의 시간 값과 함께 사용하여 날짜, 시간, 타임스탬프 등을 계산하고 변환할 수 있게 해줍니다. 여기 이 함수들에 대한 설명과 사용 예시를 제공합니다.
날짜 반환: date
date()
함수는 지정된 시간 값으로부터 날짜를 YYYY-MM-DD 형식으로 반환합니다. 추가적인 수정자(modifier)를 사용하여 날짜를 조정할 수 있습니다.- 예:
date('now', 'start of month', '+1 month', '-1 day')
는 현재 달의 마지막 날짜를 반환합니다.
시간 반환: time
time()
함수는 지정된 시간 값으로부터 시간을 HH:MM:SS 형식으로 반환합니다. 시간 값을 조정하기 위해 여러 수정자를 사용할 수 있습니다.- 예:
time('now', 'localtime')
는 현재의 지역 시간을 반환합니다.
날짜와 시간 반환: datetime
datetime()
함수는 지정된 시간 값으로부터 날짜와 시간을 YYYY-MM-DD HH:MM:SS 형식으로 반환합니다. 이 함수 역시 다양한 수정자를 통해 결과를 조정할 수 있습니다.- 예:
datetime('now', 'localtime')
는 현재의 지역 날짜와 시간을 반환합니다.
줄리안 일 반환: julianday
julianday()
함수는 지정된 시간 값으로부터 줄리안 일 번호를 반환합니다. 이 값은 BC 4713년 1월 1일부터의 일 수를 나타냅니다. 이를 통해 날짜 간의 차이를 일 단위로 쉽게 계산할 수 있습니다.- 예:
julianday('now') - julianday('1776-07-04')
는 오늘부터 1776년 7월 4일까지의 일 수를 계산합니다.
유닉스 에포크 반환: unixepoch
unixepoch()
함수는 지정된 시간 값으로부터 유닉스 에포크(1970년 1월 1일 00:00:00 UTC 이후의 초)를 반환합니다. 이를 통해 특정 시간을 유닉스 타임스탬프로 변환할 수 있습니다.- 예:
unixepoch('now')
는 현재 시간의 유닉스 타임스탬프를 반환합니다.
날짜와 시간 포맷팅: strftime
strftime()
함수는 지정된 형식에 따라 날짜와 시간을 포맷팅하는 데 사용됩니다. 이 함수는 다양한 형식 지정자를 사용하여 날짜, 시간, 요일 등을 원하는 형태로 변환할 수 있게 해줍니다. strftime()
함수의 일반적인 사용법은 strftime(형식, 시간값, 수정자, ...)
입니다. 여기서 형식은 아래에 설명된 형식 지정자를 사용하여 정의됩니다.
형식 지정자
%d
: 월의 일자를 두 자리 숫자로 표시합니다 (예: 01-31).%e
: 월의 일자를 선행 0 없이 표시합니다 (예: 1-31).%f
: 초의 소수 부분을 포함합니다 (예: SS.SSS).%F
: ISO 8601 날짜 형식으로 표시합니다 (예: YYYY-MM-DD).%H
: 24시간 형식의 시간을 두 자리 숫자로 표시합니다 (예: 00-24).%I
: 12시간 형식의 시간을 두 자리 숫자로 표시합니다 (예: 01-12).%j
: 연중 일수를 표시합니다 (예: 001-366).%J
: 줄리안 일수를 소수로 표시합니다.%k
: 24시간 형식의 시간을 선행 0 없이 표시합니다 (예: 0-24).%l
: 12시간 형식의 시간을 선행 0 없이 표시합니다 (예: 1-12).%m
: 월을 두 자리 숫자로 표시합니다 (예: 01-12).%M
: 분을 두 자리 숫자로 표시합니다 (예: 00-59).%p
: 오전과 오후를 "AM" 또는 "PM"으로 표시합니다.%P
: 오전과 오후를 소문자 "am" 또는 "pm"으로 표시합니다.%R
: ISO 8601 시간 형식으로 표시합니다 (예: HH:MM).%s
: 1970-01-01부터 현재까지의 초 수를 표시합니다.%S
: 초를 두 자리 숫자로 표시합니다 (예: 00-59).%T
: ISO 8601 시간 형식으로 표시합니다 (예: HH:MM:SS).%u
: 월요일을 1로 시작하는 주중 일수를 표시합니다 (예: 1-7).%w
: 일요일을 0으로 시작하는 주중 일수를 표시합니다 (예: 0-6).%W
: 연중 주수를 표시합니다 (예: 00-53).%Y
: 4자리 연도를 표시합니다 (예: 0000-9999).%%
: % 문자를 표시합니다.
예시
현재 날짜와 시간을 ISO 8601 형식으로 표시
SELECT strftime('%Y-%m-%dT%H:%M:%S', 'now');
현재 날짜로부터 7일 후의 날짜를 YYYY-MM-DD 형식으로 표시
SELECT strftime('%Y-%m-%d', 'now', '+7 days');
특정 날짜의 요일을 찾기 (1=월요일, ..., 7=일요일)
SELECT strftime('%u', '2023-01-01');
날짜와 시간 차이: timediff
timediff()
함수는 두 시간 값 사이의 차이를 계산합니다.
SELECT timediff('2023-02-15','2023-03-15');
timediff
의 결과값으로 새로운 날짜와 시간을 만들 수도 있습니다.
datetime(B, timediff(A,B))