SQLite의 자동 타임스탬프
- SQLite 데이터베이스에 타임스탬프 추가
-
SQLite에서
Datetime
또는 Timestamp 데이터 유형 사용 -
SQLite 테이블에서
DateTime
검색 - SQLite에서 날짜와 시간 얻기
- SQLite 날짜 및 시간에 대한 텍스트 스토리지 클래스
C# 언어에서는 SQLite 데이터베이스를 사용하여 데이터베이스에서 값을 저장하고 검색합니다. 데이터베이스는 행과 열이 있는 다른 테이블을 포함할 수 있습니다. 테이블에 새 레코드를 추가하면 타임스탬프가 null
인 새 행이 추가됩니다. 타임스탬프가 필요할 때 새 행이나 특정 정보가 날짜 및 시간별 형식으로 테이블에 추가되는 시기를 확인할 수 있습니다. 자동 타임스탬프를 얻으려면 Datetime
데이터 유형으로 정보를 검색하거나 별도의 정보로 날짜 및 시간을 검색합니다.
SQLite 데이터베이스에 타임스탬프 추가
SQLite 데이터베이스에 타임스탬프를 추가하는 가장 좋은 솔루션은 데이터베이스에 테이블을 생성하는 동안 DATETIME
데이터 유형의 타임스탬프
필드를 추가하는 것입니다. Timestamp
의 데이터 유형은 SQLite 데이터베이스에서 DateTime
이어야 합니다.
CREATE TABLE NameOfTheTable(
myID INTEGER PRIMARY KEY,
First_Name TEXT,
Other FIELDS (if needed),
Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
출력:
Creates the table with provided fields and last field timestamp
이 테이블 내에 새 항목이 있는 경우 테이블은 TimeStamp
필드 내부에 제공된 정보와 현재 시간이 포함된 새 행을 삽입합니다. 그러나 사용자가 명시적으로 NULL
값으로 설정한 경우 이 필드를 NULL
로 채울 수 있습니다.
예를 들어, 다음 명령을 사용하여 위에서 만든 테이블에 다른 행을 삽입하려고 합니다.
INSERT INTO NameOfTheTable(First_Name, sqltime) VALUES('case1', '2020-07-28T15:36:56.200');
INSERT INTO NameOfTheTable(First_Name, sqltime) VALUES('case2', '2020-10-28T13:40:02.200');
# here, the time value will be recorded as NULL
INSERT INTO NameOfTheTable(First_Name) VALUES('case3');
이제 SELECT
명령을 사용하여 테이블 내의 모든 레코드를 표시해야 합니다.
SELECT * FROM NameOfTheTable;
출력:
1:case1:2020-07-28T15:36:56.200
2:case2:2020-07-28T15:36:56.200
3:case3:2022-11-11 05:38:20
SQLite에서 Datetime
또는 Timestamp 데이터 유형 사용
SQLite에서 레코드 내부의 변경 사항을 추적해야 할 때 이러한 레코드는 타임스탬프 데이터 유형으로 업데이트됩니다. 따라서 필드에 특정 시간을 지정하려면 필드에 DateTime
데이터 유형을 사용해야 합니다.
기본 DateTime
데이터 유형에 대해 다음 계산을 수행할 수 있으므로 UNIX 타임스탬프 또는 기본 SQLite DateTime
필드 간에 비교가 있을 때마다 항상 DateTime
데이터 유형을 선택해야 합니다.
SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)
이 명령을 사용하여 DateTime
의 형식을 UNIX 타임스탬프로 변경할 수도 있습니다.
SELECT UNIX_TIMESTAMP(my_datetime)
SQLite 테이블에서 DateTime
검색
DateTime
데이터 유형을 SQLite 데이터베이스에 삽입하면 먼저 문자열 유형으로 변환한 다음 테이블에 삽입합니다. 마찬가지로 DateTime
데이터 유형의 데이터를 가져올 때 sqlite3 모듈은 먼저 이를 문자열로 변환합니다.
개념을 이해하기 위해 예를 들어보자. insertQuery()
함수는 id(테이블에 새 레코드가 추가되면 기본 키가 자동으로 증가함), my_name(이름을 저장하기 위한 비어 있지 않은 문자열 필드) 및 마지막으로 Join_date(타임스탬프 데이터 유형 형식 사용)로 세 가지 매개변수를 사용합니다. ).
또한 이 프로그램은 시간을 문자열 형식이 아닌 타임스탬프 형식으로 반환합니다.
import datetime
import sqlite3
def insertQuery(id, my_name, joiningDate):
try:
sqliteConnection = sqlite3.connect(
"SQLite.db", detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES
)
cursor = sqliteConnection.cursor()
print("SQLite Database is connected.")
# query to create a new table with three fields
sqlite_create_table_query = """CREATE TABLE new_table (
id INTEGER PRIMARY KEY,
my_name TEXT NOT NULL,
joiningDate timestamp);"""
cursor = sqliteConnection.cursor()
cursor.execute(sqlite_create_table_query)
# insert the new table information here
sqlite_insert_with_param = """INSERT INTO 'new_table'
('id', 'my_name', 'joiningDate')
VALUES (?, ?, ?);"""
data_tuple = (id, my_name, joiningDate)
cursor.execute(sqlite_insert_with_param, data_tuple)
sqliteConnection.commit()
print("New record added successfully \n")
# to get the timestamp information from the table
sqlite_select_query = (
"""SELECT my_name, joiningDate from new_table where id = ?"""
)
cursor.execute(sqlite_select_query, (1,))
records = cursor.fetchall()
# the return type of datetime is not string now.
for row in records:
developer = row[0]
joining_Date = row[1]
print(developer, " joined on", joiningDate)
print("Date type is ", type(joining_Date))
cursor.close()
# if an exception is found in sqlite version 3.
except sqlite3.Error as error:
print("Error with SQLite database", error)
finally:
if sqliteConnection:
sqliteConnection.close()
print("Closed connection for SQLite database.")
insertQuery(0, "NewName", datetime.datetime.now())
출력:
SQLite Database is connected.
New record added successfully
NewName joined on 2019-06-28 20:57:32.352790
Date type is <class 'datetime.datetime'>
Closed connection for SQLite database.
SQLite에서 날짜와 시간 얻기
Unix 타임스탬프의 경우 SQLite DATETIME()
의 함수를 unixepoch
인수와 함께 사용하여 실제 날짜 및 시간을 계산할 수 있습니다. 또는 DATE()
함수를 사용하여 날짜 정보만 가져오고 TIME()
함수를 사용하여 시간 섹션 부분을 반환할 수 있습니다.
날짜 및 시간 확인
SELECT DATETIME(1793956207, 'unixepoch');
출력:
2022-11-06 10:09:03
날짜를 잡아
SELECT DATE(1793956207, 'unixepoch');
출력:
2022-11-06
시간을 잡아
SELECT TIME(1793956207, 'unixepoch');
출력:
10:09:03
SQLite 날짜 및 시간에 대한 텍스트 스토리지 클래스
SQLite에서는 기본 제공 메서드를 사용하여 데이터베이스 내에서 날짜와 시간을 처리합니다. 상호 작용할 내장 클래스가 있는 SQLite와 달리 SQLite 데이터베이스에는 지원을 위한 날짜 및 시간 내장 함수가 있습니다.
SQLite 데이터베이스에서 날짜와 시간을 설정하기 위해 TEXT
스토리지 클래스를 사용할 때 다음 형식을 사용해야 합니다.
YYYY-MM-DD HH:MM:SS.SSS
이 형식의 결과는 2019-02-02 11:21:08.321
입니다.