-
[SQLite] 내장함수 - 2Software/SQLite 2017. 8. 20. 02:33반응형
<날짜 / 시간 함수>
SQLite3의 경우 기본 자료형인 문자열(Text), 정수(Integer) 나 실수(Real) 형태로 날짜/시간 값을 저장한다.
함수
내용
data(시간표현, 옵션, ...)
"YYYY-MM-DD" 형식 (Y: 년, M: 월, D: 일) 반환
time(시간표현, 옵션, ...)
"HH:MM:SS" 형식 (H: 시, M: 분, S: 초) 반환
datetime(시간표현, 옵션, ...)
"YYYY-MM-DD HH:MM:SS" 형식 (년, 월, 일, 시, 분, 초) 반환
julianday(시간표현, 옵션, ...)
율리우스력의 기원전 4713년 1월 1일 월요일 정오를 기점으로 계산한 날짜 수 반환
strftime('포맷', 시간표현, 옵션)
시간 표현을 지정한 포맷으로 설정한 값을 반환
시간표현
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
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
now
DDDDDDDDDD
중간에 보이는 "T"는 날짜와 시간을 구분하는 ISO 표준 형식이다. 또한 "now"는 현재 날짜/시간을 쉽고 직관적으로 표현하는 방식이며 DDDDDDDDDD는 율리우스일을 부동소수점 형태로 나타낸 것이다.
옵션
내용
NNN days
기준 날짜에서 해당 날(N)만큼 더하거나 뺀 결과를 반환
NNN months
기준 날짜에서 해당 월(N)만큼 더하거나 뺀 결과를 반환
NNN years
기준 날짜에서 해당 년도(N)만큼 더하거나 뺀 결과를 반환
NNN hours
기준 시간에서 해당 시간(N)만큼 더하거나 뺀 결과를 반환
NNN minutes
기준 시간에서 해당 분(N)만큼 더하거나 뺀 결과를 반환
NNN.NNNN seconds
기준 시간에서 해당 초(N)만큼 더하거나 뺀 결과를 반환
start of year
해당 날짜의 시작 년도를 반환
start of month
해당 날짜의 시작 월을 반환
start of day
해당 날짜의 시작 일을 반환
weekday N
기준 날짜로부터 다가올 요일별 날짜를 반환
(N: 정수로 요일을 나타내며, 일요일은 0, 월요일은 1의 순서로 순차 증가)
localtime
UTC 시간을 지역 시간으로 변경
utc
지역 시간을 UTC 시간으로 변경
unixepoch
유닉스 타임스탬프(1970년 1월 1일 기준으로 초 단위로 계산한 시간) 반환
sqlite> SELECT date('now');
date('now')
-----------
2017-08-15
date('now', 'utc')
------------------
2017-08-15
sqlite> SELECT date('now', '5 days');
date('now', '5 days')
---------------------
2017-08-20
sqlite> SELECT date('now', '-5 days');
date('now', '-5 days')
----------------------
2017-08-10
sqlite>
sqlite> SELECT date('now', 'start of month');
date('now', 'start of month')
-----------------------------
2017-08-01
sqlite> SELECT date('now', 'start of year');
date('now', 'start of year')
----------------------------
2017-01-01
sqlite> SELECT date('now', 'start of day');
date('now', 'start of day')
---------------------------
2017-08-15
sqlite> SELECT date('now', 'weekday 1');
date('now', 'weekday 1')
------------------------
2017-08-21
sqlite> SELECT time('now', 'localtime');
time('now', 'localtime')
------------------------
00:28:44
sqlite> SELECT datetime('now', 'localtime');
datetime('now', 'localtime')
----------------------------
2017-08-16 00:29:24
sqlite> SELECT datetime(1234567899, 'unixepoch', 'localtime');
datetime(1234567899, 'unixepoch', 'localtime')
----------------------------------------------
2009-02-14 08:31:39
sqlite> SELECT strftime('%H : %M(%m-%d)', 'now');
strftime('%H : %M(%m-%d)', 'now')
---------------------------------
15 : 34(08-15)
sqlite> CREATE TABLE birthday(
...> name TEXT,
...> birthday TEXT
...> );
sqlite> INSERT INTO birthday VALUES ('Minsu', date('1988-03-12'));
sqlite> INSERT INTO birthday VALUES ('Jiyoung', date('1990-09-24'));
sqlite> SELECT name, strftime('%Y-%m-%d', birthday) AS BIRTYDAY FROM birthday;
name BIRTYDAY
---------- ----------
Minsu 1988-03-12
Jiyoung 1990-09-24
<시스템 함수>
함수
내용
changes()
가장 최근에 수행한 SQL 문으로 인해 수정된 행의 개수를 반환
total_changes()
데이터베이스가 연결된 이후 수정된 모든 레코드의 개수 반환
last_insert_rowid()
가장 마지막에 입력된 rowid를 반환
sqlite_version()
SQLite3 라이브러리 버전을 반환
sqlite_source_id()
SQLite3 라이브러리 소스 코드의 특정 버전 정보를 반환
sqlite> INSERT INTO cars (name, price, brand) VALUES('A4', 1500000, 'Audi');
sqlite> SELECT changes(), total_changes();
changes() total_changes()
---------- ---------------
1 1
sqlite> DELETE FROM birthday;
sqlite> SELECT changes(), total_changes();
changes() total_changes()
---------- ---------------
4 5
<기타 함수>
함수
내용
typeof(x)
x의 자료형을 문자열로 반환
ifnull(x, y)
x, y 인자 중 처음으로 null이 아닌 값을 반환
coalesce(x,y,...)
2개 이상의 인자 중 처음으로 null이 아닌 값을 반환
nullif(x, y)
x, y가 다른 경우 x를 반환하고, 일치하는 경우에는 null을 반환
zeroblob(n)
0x00으로 초기화된 n 바이트의 BLOB을 반환
load_extension(x, y)
외부 라이브러리 x를 등록하고, 진입점 y를 지정
quote(x)
SQL 구문에 맞는 문자열을 반환
반응형'Software > SQLite' 카테고리의 다른 글
[SQLite] 관계형 데이터베이스 (0) 2017.09.02 [SQLite] 그룹화 (1) 2017.08.21 [SQLite] 내장 함수 - 1 (0) 2017.08.14 [SQLite] Record 수정 및 삭제 (0) 2017.08.09 [SQLite] Record 조회 (0) 2017.07.31 댓글