SQLite 날짜 및 시간
SQLite는 다음 5가지 날짜 및 시간 함수를 지원합니다.
序号 | 函数 | 实例 |
---|---|---|
1 | date(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD 格式返回日期。 |
2 | time(timestring, modifier, modifier, ...) | 以 HH:MM:SS 格式返回时间。 |
3 | datetime(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD HH:MM:SS 格式返回。 |
4 | julianday(timestring, modifier, modifier, ...) | 这将返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数。 |
5 | strftime(format, timestring, modifier, modifier, ...) | 这将根据第一个参数指定的格式字符串返回格式化的日期。具体格式见下边讲解。 |
위 5가지 날짜 및 시간 함수는 시간 문자열을 매개변수로 사용합니다. 시간 문자열 뒤에 0개 이상의 수정자 수정자가 옵니다. strftime() 함수는 형식 문자열 형식을 첫 번째 인수로 사용할 수도 있습니다. 다양한 유형의 시간 문자열과 수정자에 대해 아래에서 자세히 설명합니다.
시간 문자열
시간 문자열은 다음 형식 중 하나일 수 있습니다.
序号 | 时间字符串 | 实例 |
---|---|---|
1 | YYYY-MM-DD | 2010-12-30 |
2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
4 | MM-DD-YYYY HH:MM | 30-12-2010 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 | now | 2013-05-07 |
날짜와 시간을 구분하는 문자 그대로 "T"를 사용할 수 있습니다.
수정자
시간 문자열 뒤에는 0개 이상의 수정자가 올 수 있으며, 이는 위의 5개 함수에서 반환된 날짜 및/또는 시간을 변경합니다. 위의 다섯 가지 함수 중 하나는 시간을 반환합니다. 수식어는 왼쪽에서 오른쪽으로 사용해야 하며 SQLite에서 사용할 수 있는 수식어는 아래와 같습니다.
NNN days
NNN hour
NNN분
NNN.NNNN초
NNN개월
NNN년
월초
연초
하루 시작
평일 N
유닉스 시대
현지 시간
utc
형식
SQLite는 날짜와 시간 형식을 지정하는 매우 편리한 strftime() 기능을 제공합니다. 다음 대체 항목을 사용하여 날짜와 시간의 형식을 지정할 수 있습니다.
替换 | 描述 |
---|---|
%d | 一月中的第几天,01-31 |
%f | 带小数部分的秒,SS.SSS |
%H | 小时,00-23 |
%j | 一年中的第几天,001-366 |
%J | 儒略日数,DDDD.DDDD |
%m | 月,00-12 |
%M | 分,00-59 |
%s | 从 1970-01-01 算起的秒数 |
%S | 秒,00-59 |
%w | 一周中的第几天,0-6 (0 is Sunday) |
%W | 一年中的第几周,01-53 |
%Y | 年,YYYY |
%% | % symbol |
Instance
이제 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 11:51:06
계산 방법은 다음과 같습니다. 현재 UNIX 타임스탬프:
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime'); 1367926057
아래는 미국의 독립 선언서 서명 이후의 일수를 계산합니다.
sqlite> SELECT julianday('now') - julianday('1776-07-04'); 86504.4775830326
다음은 특정 순간 이후의 초 수 계산입니다. 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 수정자를 사용합니다.
으르르르르르르