BigData

[SQLite] date형식 timestamp를 이용하여 날짜표현하기

IT오이시이 2020. 8. 5. 00:13
728x90

[SQLite 사용법] date형식 timestamp를 이용하여 날짜표현하기

SQLite 사용법 관련  목차 

1. [SQLite]-sqlite 소개 -Serverless-Database
2. [SQLite]-SQLite_관리-Commands
3. [SQLite] sqlite 테이블 생성 - create table
4. [SQLite] Sqlite transaction - ACID개념
5. [SQLite] [SQLite] Sqlite transaction 처리문 작성 - BEGIN TRANSACTION
6.[SQLite] date형식 timestamp를 이용하여 날짜 표현하기
7.[SQLite] SQLite 윈도우-리눅스 설치하기

 * Sqlite3-timestamp를-이용하여-date-표현하기


[SQLite] date형식 timestamp를 이용하여 표현하기


Sqlite 날짜 표현

SQLite timestamp explained

SQLite에서 timestamp 데이터 유형은 날짜와 시간 정보를 저장하는 데 사용됩니다. timestamp 값은 보통 YYYY-MM-DD HH:MM:SS 형식으로 저장되며, YYYY는 연도, MM은 월, DD는 일, HH는 시간, MM은 분, SS는 초를 나타냅니다.

SQLite에서 timestamp 값은 다양한 방법으로 사용될 수 있습니다. 예를 들어, 데이터베이스에서 일련의 이벤트가 발생한 날짜와 시간을 추적하거나, 어떤 동작이 수행된 시간을 저장하는 데 사용될 수 있습니다.

SQLite에서 timestamp 값을 사용할 때는 데이터 유형이 INTEGER로 지정됩니다. 이는 날짜와 시간 정보가 정수 값으로 저장되기 때문입니다. 따라서 SQLite에서 timestamp 값을 사용할 때에는 다음과 같이 처리해야 합니다.

1.datetime() 함수를 사용하여 timestamp 값을 YYYY-MM-DD HH:MM:SS 형식으로 변환할 수 있습니다.
2. strftime() 함수를 사용하여 timestamp 값을 다양한 날짜와 시간 형식으로 변환할 수 있습니다.
3. julianday() 함수를 사용하여 timestamp 값을 율리우스 날짜로 변환할 수 있습니다.




Sqlite timestamp 예시


DB 를 생성하고 테이블을 생성하는 과정을 간단히 설명하면 아래와 같습니다.

1) 먼저 sql을 test.sql 파일로 작성해 둔다.

# [test.sql]을 아래와 같이 작성한다.
drop table if exists user_main;
create table user_main (
uid integer primary key autoincrement,
id string not null unique,
passwd string not null,
nick string not null unique,
desc string ,
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);


* DEFAULT CURRENT_TIMESTAMP 는 입력값이 없으면 기본값으로 현재 날짜와 시간을 저장합니다.


SQLite에서는 DEFAULT 절을 사용하여 새로운 행이 삽입될 때 기본값을 설정할 수 있습니다. CURRENT_TIMESTAMP 함수를 사용하여 새로운 행이 삽입될 때 현재 날짜와 시간을 자동으로 입력할 수 있습니다.

# 테이블을 생성합니다.
CREATE TABLE my_table (
    id INTEGER PRIMARY KEY,
    name TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);


# 날짜 값을 포함하지 않고 id 필드만으로 새로운 행을 삽입합니다.
sql>INSERT INTO my_table (name) VALUES ('foo');


#테이블을 조회 합니다.
sql> SELECT * FROM my_table;

id | name | created_at
---|-------|-------------------
1  | foo   | 2023-04-24 16:05:12

# my_table에는 자동으로 id와 name값이 입력 되어 있습니다.

 

2) 아래와 같이 실행하면 데이터베이스와 테이블이 생성된다.

# sqlite3 test.db < test.sql


# sqlite3 test.db
SQLite version 3.26.0 2018-12-01 12:34:55
Enter ".help" for usage hints.

# show dbfile info
sqlite> .databases
main: /svc/web_app/web_chat/jakub_chat/db/test.db

# show list of tables
sqlite> .tables % ;
user_main

# show schema
sqlite> .schema user_main
CREATE TABLE user_main (
uid integer primary key autoincrement,
id string not null unique,
passwd string not null,
nick string not null unique,
desc string ,
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 

3) 아래와 같이 테이블에 입력된 데이터 조회와 값을 입력 합니다.

 

# data 입력 및 조회
sqlite> select * from user_main;

# insert default values
sqlite>insert into user_main (id, passwd, nick, desc) values ('user1','user1','nic_1', 'nic is name');
sqlite>insert into user_main (id, passwd, nick, desc) values ('user2','user2','nic_2', 'nic is name');


# select values
sqlite> select * from user_main;
1|user1|user1|nic_1|nic is name|2020-08-04 14:58:22
2|user2|user2|nic_2|nic is name|2020-08-04 14:59:23


# sqllite3은 date 형이 없어서 integer, real datatype 에 값을 넣고 변형 하는 예제가 있는데.
# timestamp로 설정이 가능하였다.

sqlite> select CURRENT_TIMESTAMP ;
2020-08-04 15:03:23

 

4) Date 처리를 위한 SQL 함수

# 참고 - Date 처리 함수
sqlite>select strftime('%s','now'), datetime(strftime('%s','now'), 'unixepoch', 'localtime');

"1660647655" "2022-08-16 20:00:55"

strftime('%s', 'now'): 현재 시간의 시스템 UnIX 타임값을 출력 한다.

datetime(strftime('%s','now'), 'unixepoch', 'localtime'): 현재 시간을 YYYY-mm-dd hh:mi:ss 형식로 출력한다.

 

SQLite 사용법 관련  목차 

1. [SQLite]-sqlite 소개 -Serverless-Database
2. [SQLite]-SQLite_관리-Commands
3. [SQLite] sqlite 테이블 생성 - create table
4. [SQLite] Sqlite transaction - ACID개념
5. [SQLite] [SQLite] Sqlite transaction 처리문 작성 - BEGIN TRANSACTION
6.[SQLite] date형식 timestamp를 이용하여 날짜 표현하기
7.[SQLite] SQLite 윈도우-리눅스 설치하기

 

728x90
반응형