답변:
필드의 기본값을 선언하십시오.
CREATE TABLE MyTable(
ID INTEGER PRIMARY KEY,
Name TEXT,
Other STUFF,
Timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
그러나 INSERT
명령에서이 필드를 명시 적으로로 설정하면이 필드 NULL
가로 설정됩니다 NULL
.
DATETIME
데이터 형식은 없지만 SQLite는 필드 형식으로 아무것도 허용 합니다.
DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW', 'localtime'))
하나 실제로 의미있는 마이크로 값을 가져옵니다.
SQLite의 테이블에 TIMESTAMP 필드를 작성할 수 있습니다. 다음을 참조하십시오.
CREATE TABLE my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name VARCHAR(64),
sqltime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
INSERT INTO my_table(name, sqltime) VALUES('test1', '2010-05-28T15:36:56.200');
INSERT INTO my_table(name, sqltime) VALUES('test2', '2010-08-28T13:40:02.200');
INSERT INTO my_table(name) VALUES('test3');
결과는 다음과 같습니다.
SELECT * FROM my_table;
자동 datetime 완료의 실제 예제 인 datefunc를 읽으면 다음과 같습니다.
sqlite> CREATE TABLE 'test' (
...> 'id' INTEGER PRIMARY KEY,
...> 'dt1' DATETIME NOT NULL DEFAULT (datetime(CURRENT_TIMESTAMP, 'localtime')),
...> 'dt2' DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime')),
...> 'dt3' DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%d %H:%M:%f', 'now', 'localtime'))
...> );
자동 날짜 시간 완성을 시작하는 방식으로 일부 행을 삽입합시다.
sqlite> INSERT INTO 'test' ('id') VALUES (null);
sqlite> INSERT INTO 'test' ('id') VALUES (null);
저장된 데이터는 처음 두 가지는 동일하지만 세 번째 기능은 아니라는 것을 분명히 보여줍니다.
sqlite> SELECT * FROM 'test';
1|2017-09-26 09:10:08|2017-09-26 09:10:08|2017-09-26 09:10:08.053
2|2017-09-26 09:10:56|2017-09-26 09:10:56|2017-09-26 09:10:56.894
SQLite 함수는 괄호로 묶여 있습니다! 이것이 하나의 예에서 보여주기가 얼마나 어려웠습니까?
즐기세요!
트리거를 사용할 수 있습니다. 잘 작동합니다
CREATE TABLE MyTable(
ID INTEGER PRIMARY KEY,
Name TEXT,
Other STUFF,
Timestamp DATETIME);
CREATE TRIGGER insert_Timestamp_Trigger
AFTER INSERT ON MyTable
BEGIN
UPDATE MyTable SET Timestamp =STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') WHERE id = NEW.id;
END;
CREATE TRIGGER update_Timestamp_Trigger
AFTER UPDATE On MyTable
BEGIN
UPDATE MyTable SET Timestamp = STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') WHERE id = NEW.id;
END;
위의 답변을 보완하려면 ...
EF를 사용하는 경우 Data Annotation [Timestamp]로 속성을 장식 한 다음 컨텍스트 클래스 내에서 재정의 된 OnModelCreating으로 이동하여이 Fluent API 코드를 추가하십시오.
modelBuilder.Entity<YourEntity>()
.Property(b => b.Timestamp)
.ValueGeneratedOnAddOrUpdate()
.IsConcurrencyToken()
.ForSqliteHasDefaultValueSql("CURRENT_TIMESTAMP");
이 테이블에 삽입 될 모든 데이터에 기본값을 설정합니다.
당신은 사용하여 사용자 정의 날짜 시간을 사용할 수 있습니다 ...
create table noteTable3
(created_at DATETIME DEFAULT (STRFTIME('%d-%m-%Y %H:%M', 'NOW','localtime')),
title text not null, myNotes text not null);
현재 시스템 날짜를 얻으려면 'NOW', 'localtime'을 사용하십시오. 그렇지 않으면 데이터베이스에 삽입 시간이 지난 후 데이터베이스에 과거 또는 다른 시간이 표시됩니다.
감사합니다...