logo

[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))
Previous
집계 함수