Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite允许将字符串数据插入datetime列_Sql_Sqlite - Fatal编程技术网

SQLite允许将字符串数据插入datetime列

SQLite允许将字符串数据插入datetime列,sql,sqlite,Sql,Sqlite,表: SQL: 不管actime列的非datetime值是多少,最后一条记录都会进入表中。为什么以及如何强制执行只有好数据才能进入 这里有一个。不幸的是,在sqlite中不是真的-它没有datetime类型-请参阅中的第1.2节,sqlite中没有datetime类型 SQLite没有为存储日期而预留的存储类 和/或时间。相反,SQLite的内置日期和时间函数 能够将日期和时间存储为文本、实数或整数 价值观: insert into logaction values ('TEST', '2013

表:

SQL:

不管actime列的非datetime值是多少,最后一条记录都会进入表中。为什么以及如何强制执行只有好数据才能进入


这里有一个。

不幸的是,在sqlite中不是真的-它没有datetime类型-请参阅中的第1.2节,sqlite中没有datetime类型

SQLite没有为存储日期而预留的存储类 和/或时间。相反,SQLite的内置日期和时间函数 能够将日期和时间存储为文本、实数或整数 价值观:

insert into logaction values ('TEST', '2013-08-22', 1);
insert into logaction values ('TEST', '2013-08-22 09:45:30', 1);
insert into logaction values ('TEST', 'xyz', 2); // shouldn't this fail?
应用程序可以选择将日期和时间存储在其中任何一个中 格式,并使用内置的日期和 时间函数

你可以这样创建你的表,它不会改变任何事情

TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
REAL as Julian day numbers, the number of days since noon in Greenwich 
on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC. 

以下是一个简单的解决方法:

CREATE TABLE logaction
(
  actype varchar(8) not null,
  actime NonexistingType not null,
  devid int not null
);

你知道整数支持多少位吗?e、 g.我能不能从1970年1月1日算起几毫秒?我需要精确的时间戳我刚刚测试了1377181566303,结果很好。是的,但这能让我以时间而不是字符串的形式查询和比较
actime
列吗?@两栖体任何日期/时间都必须使用日期和时间函数()comparison@amphibient这只是一个约束,它不会使它成为真正的日期时间类型。
CREATE TABLE logaction
(
  actype varchar(8) not null,
  actime NonexistingType not null,
  devid int not null
);
CREATE TABLE logaction
(
  actype varchar(8) not null,
  actime DATETIME not null check( DATETIME(actime) is not null ),
  devid int not null
);

sqlite> insert into logaction values ('TEST', '2013-08-22', 1);
sqlite> insert into logaction values ('TEST', '2013-08-22 09:45:30', 1);
sqlite> insert into logaction values ('TEST', 'xyz', 2);
Error: constraint failed
sqlite>