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中将int(UNIX时间戳)转换为datetime?_Sql_Sqlite_Sqlitejdbc - Fatal编程技术网

如何在SQLite中将int(UNIX时间戳)转换为datetime?

如何在SQLite中将int(UNIX时间戳)转换为datetime?,sql,sqlite,sqlitejdbc,Sql,Sqlite,Sqlitejdbc,我必须用SQL创建一个表(我使用IntelliJ和Java),并且该表必须遵守以下限制 该表将包含以下列: 标题-需要能够存储字母、数字和特殊字符 新闻描述-需要能够存储新闻稿的文本 发布日期-需要能够存储整数(在UNIX系统中) 除此之外,我们还有以下限制: 仅当该表不存在时,才会创建该表 主键将是标题 2份时事通讯不能有相同的描述 新闻描述不能为空 如果未指定发布日期,我需要使用UTC将其设置为2019年4月27日21:11:12,并且日期必须为UNIX格式 CREATE

我必须用SQL创建一个表(我使用IntelliJ和Java),并且该表必须遵守以下限制

该表将包含以下列:

  • 标题-需要能够存储字母、数字和特殊字符
  • 新闻描述-需要能够存储新闻稿的文本
  • 发布日期-需要能够存储整数(在UNIX系统中)
除此之外,我们还有以下限制:

  • 仅当该表不存在时,才会创建该表

  • 主键将是标题

  • 2份时事通讯不能有相同的描述

  • 新闻描述不能为空

  • 如果未指定发布日期,我需要使用UTC将其设置为2019年4月27日21:11:12,并且日期必须为UNIX格式

      CREATE TABLE IF NOT EXISTS posts (
         title VARCHAR,
         news_description TEXT UNIQUE NOT NULL,
         publication_date "I don't know what I should write here in order to respect the last restriction"
         PRIMARY KEY(title)
      );
    
因此,我的问题是,在创建表时,我如何尊重上面提到的所有限制


注意:这是我的家庭作业,除了表格之外,我不能添加任何内容,因此我需要遵守表格创建过程中的所有限制。

据我所知,Unix格式是指Unix epoch格式,即自1970-01-01以来的秒数。这将用数字表示:

publication_date int default 1556399472
尽管如此,我还是建议使用内置的
datetime
数据类型:

publication_date datetime default '2019-04-27 21:11:12'

在需要时转换为Unix历元非常容易。

据我所知,Unix格式是指Unix历元格式,即自1970-01-01以来的秒数。这将用数字表示:

publication_date int default 1556399472
尽管如此,我还是建议使用内置的
datetime
数据类型:

publication_date datetime default '2019-04-27 21:11:12'

在需要时转换为Unix纪元非常容易。

发布日期的数据类型必须是
整数
,此列的默认值必须是
1556399472
,这是
2019年4月27日21:11:12的等效时间戳
将日期作为整数存储在SQLite中没有问题,因为使用带有的
'unixepoch'
修饰符可以轻松检索可读日期。
例如:

SELECT DATETIME(1556399472, 'unixepoch')
返回:

2019-04-27 21:11:12
SQLite中也没有数据类型
VARCHAR
。您应该使用
文本

因此,表的create语句可以是:

CREATE TABLE IF NOT EXISTS posts (
  title TEXT,
  news_description TEXT UNIQUE NOT NULL,
  publication_date INTEGER NOT NULL DEFAULT 1556399472,
  PRIMARY KEY(title)
);

如果希望
发布日期
的定义为空,可以将其从
发布日期
的定义中删除。

发布日期
的数据类型必须为
整数
,此列的默认值必须为
1556399472
,这是2019年4月27日
的等效时间戳21:11:12

将日期作为整数存储在SQLite中没有问题,因为使用带有的
'unixepoch'
修饰符可以轻松检索可读日期。
例如:

SELECT DATETIME(1556399472, 'unixepoch')
返回:

2019-04-27 21:11:12
SQLite中也没有数据类型
VARCHAR
。您应该使用
文本

因此,表的create语句可以是:

CREATE TABLE IF NOT EXISTS posts (
  title TEXT,
  news_description TEXT UNIQUE NOT NULL,
  publication_date INTEGER NOT NULL DEFAULT 1556399472,
  PRIMARY KEY(title)
);

如果希望发布日期可以为空,可以从发布日期的定义中删除
notnull

您有一个特殊的问题:“如何在SQLite中创建具有默认值的日期时间列”。因此,通过将您的问题标题设置为“创建具有特定限制的SQL表”,您获得答案的机会减少了一半,您有一个特殊的问题:“如何在SQLite中创建具有默认值的datetime列”。因此,通过将您的问题标题设置为“创建具有特定限制的SQL表”,您获得答案的机会将减少一半。但是,如果我这样做,当我在控制台中输出数据库信息时,我将得到1556399472,而不是2019-04-27 21:11:12。有没有办法在create语句中转换它@但是其中一个限制是:publication_date-需要能够存储一个整数(在UNIX系统中)。所以必须将其存储为整数。查询表时,可以使用DATETIME()函数返回格式为YYYY-MM-DD hh:MM:ss的表。这不是你想要的吗?不知怎的,我在发送它的平台上仍然得到了一个错误的答案。我一定要注意所有的细节,这样我就不会有小错误。我很快就会来解释的。。。这是一个小错误,但现在我重新制作,它是正确的。我很感激你给我的答案。但是如果我这样做,当我在控制台中输出我的数据库信息时,我会得到1556399472,而不是2019-04-27 21:11:12。有没有办法在create语句中转换它@但是其中一个限制是:publication_date-需要能够存储一个整数(在UNIX系统中)。所以必须将其存储为整数。查询表时,可以使用DATETIME()函数返回格式为YYYY-MM-DD hh:MM:ss的表。这不是你想要的吗?不知怎的,我在发送它的平台上仍然得到了一个错误的答案。我一定要注意所有的细节,这样我就不会有小错误。我很快就会来解释的。。。这是一个小错误,但现在我重新制作,它是正确的。我很感激你给我的答案。