[SQL] SQLite는 데이터베이스 기본 시간 값 '지금'
SQLSQLite는 데이터베이스 기본 시간 값 '지금'
이 타임 스탬프 열이있는 테이블을 만들 SQLite는 데이터베이스에서 가능하다 ( '지금') DATETIME에 기본?
이 같이 :
CREATE TABLE test (
id INTEGER PRIMARY KEY AUTOINCREMENT,
t TIMESTAMP DEFAULT DATETIME('now')
);
이 오류 ... 어떻게 해결할 수 있습니다?
해결법
-
==============================
1.난 당신이 사용할 수 있다고 생각합니다
난 당신이 사용할 수 있다고 생각합니다
CREATE TABLE test ( id INTEGER PRIMARY KEY AUTOINCREMENT, t TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
버전 3.1 (소스) 등의
-
==============================
2.DR 방법. 최근 목록 게시물에 HIPP :
DR 방법. 최근 목록 게시물에 HIPP :
CREATE TABLE whatever( .... timestamp DATE DEFAULT (datetime('now','localtime')), ... );
-
==============================
3.() '지금'DATETIME () : 그것은 단지 구문 오류, 당신은 괄호가 필요합니다
() '지금'DATETIME () : 그것은 단지 구문 오류, 당신은 괄호가 필요합니다
이 문서를 보면, 당신은 구문의 'EXPR'옵션 주위에 추가 괄호를 알게 될 것이다.
-
==============================
4.이 질문에 다른 답변과 의견에 따라 전체 예이다. 예에서, 타임 스탬프 (created_at 열)은 UNIX 에포크 UTC 시간대로 저장하며 필요한 경우에만 로컬 시간대로 변환된다.
이 질문에 다른 답변과 의견에 따라 전체 예이다. 예에서, 타임 스탬프 (created_at 열)은 UNIX 에포크 UTC 시간대로 저장하며 필요한 경우에만 로컬 시간대로 변환된다.
유닉스 시대를 사용하여 저장 공간을 절약 할 수 - 4 바이트 정수 대 ISO8601 문자열로, 데이터 유형을 참조 저장 될 때 (24)는 문자열을 바이트. 4 바이트가 충분하지 않으면 6 또는 8 바이트로 증가 할 수있다.
UTC 시간대에 타임 스탬프를 저장하면 편리 여러 시간대에 적당한 값을 표시 할 수 있습니다.
SQLite는 버전 3.8.6입니다 우분투 LTS 14.04로 제공됩니다.
$ sqlite3 so.db SQLite version 3.8.6 2014-08-15 11:46:33 Enter ".help" for usage hints. sqlite> .headers on create table if not exists example ( id integer primary key autoincrement ,data text not null unique ,created_at integer(4) not null default (strftime('%s','now')) ); insert into example(data) values ('foo') ,('bar') ; select id ,data ,created_at as epoch ,datetime(created_at, 'unixepoch') as utc ,datetime(created_at, 'unixepoch', 'localtime') as localtime from example order by id ; id|data|epoch |utc |localtime 1 |foo |1412097842|2014-09-30 17:24:02|2014-09-30 20:24:02 2 |bar |1412097842|2014-09-30 17:24:02|2014-09-30 20:24:02
나는 쿼리의 순간에 UTC + 2 DST에 위치하고있어로의 현지 올바른 것입니다.
-
==============================
5.저장 공간을 절약하기 위해, REAL 유형을 사용하는 것이 더있을 수 있습니다.
저장 공간을 절약하기 위해, REAL 유형을 사용하는 것이 더있을 수 있습니다.
데이터 유형에 SQLite는 1.2 섹션 버전 3 인용
CREATE TABLE test ( id INTEGER PRIMARY KEY AUTOINCREMENT, t REAL DEFAULT (datetime('now', 'localtime')) );
열 제약 조건을 참조하십시오.
그리고 어떤 가치를 제공하지 않고 행을 삽입합니다.
INSERT INTO "test" DEFAULT VALUES;
-
==============================
6.당신이 쓰기 괄호하지 않았다 때문에 구문 오류입니다
당신이 쓰기 괄호하지 않았다 때문에 구문 오류입니다
당신이 작성하는 경우
(날짜 ( '지금', '의 현지'))
-
==============================
7.정수는 20 바이트를 저장하는대로이 다른 예는 현지 시간을 저장합니다. 작업은 필드 기본, 업데이트 트리거, 그리고보기에서 이루어집니다. 의 strftime는 '% S'(작은 따옴표)를 사용해야하기 때문에 "% S"나에 '일정하지'오류 줬어요 (큰 따옴표).
정수는 20 바이트를 저장하는대로이 다른 예는 현지 시간을 저장합니다. 작업은 필드 기본, 업데이트 트리거, 그리고보기에서 이루어집니다. 의 strftime는 '% S'(작은 따옴표)를 사용해야하기 때문에 "% S"나에 '일정하지'오류 줬어요 (큰 따옴표).
Create Table Demo ( idDemo Integer Not Null Primary Key AutoIncrement ,DemoValue Text Not Null Unique ,DatTimIns Integer(4) Not Null Default (strftime('%s', DateTime('Now', 'localtime'))) -- get Now/UTC, convert to local, convert to string/Unix Time, store as Integer(4) ,DatTimUpd Integer(4) Null ); Create Trigger trgDemoUpd After Update On Demo Begin Update Demo Set DatTimUpd = strftime('%s', DateTime('Now', 'localtime')) -- same as DatTimIns Where idDemo = new.idDemo; End; Create View If Not Exists vewDemo As Select -- convert Unix-Times to DateTimes so not every single query needs to do so idDemo ,DemoValue ,DateTime(DatTimIns, 'unixepoch') As DatTimIns -- convert Integer(4) (treating it as Unix-Time) ,DateTime(DatTimUpd, 'unixepoch') As DatTimUpd -- to YYYY-MM-DD HH:MM:SS From Demo; Insert Into Demo (DemoValue) Values ('One'); -- activate the field Default -- WAIT a few seconds -- Insert Into Demo (DemoValue) Values ('Two'); -- same thing but with Insert Into Demo (DemoValue) Values ('Thr'); -- later time values Update Demo Set DemoValue = DemoValue || ' Upd' Where idDemo = 1; -- activate the Update-trigger Select * From Demo; -- display raw audit values idDemo DemoValue DatTimIns DatTimUpd ------ --------- ---------- ---------- 1 One Upd 1560024902 1560024944 2 Two 1560024944 3 Thr 1560024944 Select * From vewDemo; -- display automatic audit values idDemo DemoValue DatTimIns DatTimUpd ------ --------- ------------------- ------------------- 1 One Upd 2019-06-08 20:15:02 2019-06-08 20:15:44 2 Two 2019-06-08 20:15:44 3 Thr 2019-06-08 20:15:44
from https://stackoverflow.com/questions/200309/sqlite-database-default-time-value-now by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 Oracle 데이터베이스에 허용되는 최대 연결 수를 확인하려면? (0) | 2020.04.23 |
---|---|
[SQL] ALTER 테이블은 복합 기본 키를 추가하는 (0) | 2020.04.23 |
[SQL] SQL Server Management Studio의 테이블 편집 후 변경 사항을 저장 (0) | 2020.04.23 |
[SQL] 어떻게 이름을 몰라도 SQL 기본 제약 조건을 삭제하려면? (0) | 2020.04.22 |
[SQL] 는 SQL OVER () 절 - 언제, 왜 유용한가? (0) | 2020.04.22 |