SQLite-날짜 및 시간

SQLite는 다음과 같이 5 개의 날짜 및 시간 기능을 지원합니다.

Sr. 아니. 함수
1 날짜 (시간 문자열, 수정 자 ...) 다음 형식으로 날짜를 반환합니다. YYYY-MM-DD
2 시간 (시간 문자열, 수정 자 ...) 시간을 HH : MM : SS로 반환합니다.
datetime (시간 문자열, 수정 자 ...) YYYY-MM-DD HH : MM : SS를 반환합니다.
4 julianday (시간 문자열, 수정 자 ...) BC 4714 년 11 월 24 일 그리니치 정오 이후의 일 수를 반환합니다.
5 strftime (시간 문자열, 수정 자 ...) 이것은 아래에 설명 된 포맷터에 따라 포맷 된 첫 번째 인수로 지정된 포맷 문자열에 따라 포맷 된 날짜를 반환합니다.

위의 다섯 가지 날짜 및 시간 함수는 모두 시간 문자열을 인수로 사용합니다. 시간 문자열 다음에는 0 개 이상의 수정자가옵니다. strftime () 함수는 또한 첫 번째 인수로 형식 문자열을 사용합니다. 다음 섹션에서는 다양한 유형의 시간 문자열 및 수정 자에 대해 자세히 설명합니다.

시간 문자열

시간 문자열은 다음 형식 중 하나 일 수 있습니다.

Sr. 아니. 시간 문자열
1 YYYY-MM-DD 2010-12-30
2 YYYY-MM-DD HH : MM 2010-12-30 12:10
YYYY-MM-DD HH : MM : SS.SSS 2010-12-30 12 : 10 : 04.100
4 MM-DD-YYYY HH : MM 2010 년 12 월 30 일 12:10
5 HH : MM 12:10
6 YYYY-MM-DDTHH : MM 2010-12-30 12:10
7 HH : MM : SS 12:10:01
8 YYYYMMDD HHMMSS 20101230 121001
9 지금 2013-05-07

"T"는 날짜와 시간을 구분하는 리터럴 문자로 사용할 수 있습니다.

수정 자

시간 문자열 뒤에는 위의 5 개 함수 중 하나에서 반환되는 날짜 및 / 또는 시간을 변경하는 0 개 이상의 수정자가 올 수 있습니다. 수정자는 왼쪽에서 오른쪽으로 적용됩니다.

다음 수정자는 SQLite에서 사용할 수 있습니다-

  • NNN 일
  • NNN 시간
  • NNN 분
  • NNN.NNNN 초
  • NNN 개월
  • NNN 년
  • 월초
  • 연초
  • 하루의 시작
  • 평일 N
  • unixepoch
  • localtime
  • utc

포맷터

SQLite는 매우 편리한 기능을 제공합니다 strftime()날짜와 시간을 포맷합니다. 다음 대체를 사용하여 날짜 및 시간 형식을 지정할 수 있습니다.

치환 기술
%디 날짜, 01-31
%에프 밀리 초, SS.SSS
% H 시간, 00-23
%제이 일, 001-366
%제이 율리우스 력 일 번호, DDDD.DDDD
%미디엄 월, 00-12
%미디엄 분, 00-59
%에스 1970-01-01 이후 초
%에스 초, 00-59
% w 요일, 0-6 (0은 일요일)
% W 연중 주, 01-53
%와이 연도, YYYY
%% % 기호

이제 SQLite 프롬프트를 사용하여 다양한 예제를 시도해 봅시다. 다음 명령은 현재 날짜를 계산합니다.

sqlite> SELECT date('now');
2013-05-07

다음 명령은 이번 달의 마지막 날을 계산합니다.

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

다음 명령은 주어진 UNIX 타임 스탬프 1092941466에 대한 날짜와 시간을 계산합니다.

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

다음 명령은 주어진 UNIX 타임 스탬프 1092941466의 날짜와 시간을 계산하고 현지 시간대를 보정합니다.

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06

다음 명령은 현재 UNIX 타임 스탬프를 계산합니다.

sqlite> SELECT strftime('%s','now');
1393348134

다음 명령은 미국 독립 선언서에 서명 한 이후의 일수를 계산합니다.

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023

다음 명령은 2004 년 특정 순간 이후의 초 수를 계산합니다.

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

다음 명령은 현재 연도의 10 월 첫 번째 화요일 날짜를 계산합니다.

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

다음 명령은 UNIX 시대 이후의 시간을 초 단위로 계산합니다 (예 : strftime ( '% s', 'now')).

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

날짜 형식을 지정할 때 UTC와 현지 시간 값을 변환하려면 다음과 같이 utc 또는 localtime 수정자를 사용하십시오.

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00