在DB浏览器中为SQLite设置时区为IST(+5:30)

时间:2016-07-25 08:11:26

标签: sql sqlite

我一直在搜索DB BRowser for SQLite中关于如何将时区更改为IST的设置(印度标准时间+5:30)有没有办法直接设置它而不运行任何查询?我还发现了一些可以将db时间转换为IST的SQL查询,但几乎所有都是DATETIME语句。我正在寻找一个永久更改时区的设置,如果不可能,那么可能是一个更新查询,可以读取数据库中的所有记录,并将所有时间更改/转换/替换为IST。有人可以对此有所了解吗?

我的字段名称“expire_time”在CREATE TABLE

中设置为INSERT INTO MyTable(MyColumn) VALUES(datetime(CURRENT_TIMESTAMP, 'localtime')) NOT NULL

我搜索的是

SELECT datetime(1092941466, 'unixepoch', 'localtime');

但我不是在寻找插入声明

url(r'^viewspecs/itemdetails/$', views.specsView),

但我不是在寻找选择陈述

请使用设置(如果在DB浏览器中为SQLite提供)或可以更改GMT到IST的所有时间的更新查询来帮助我。

感谢。

修改

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

SQLite没有DATETIME类型。它会处理与其他DBMS截然不同的数据类型。例如

CREATE TABLE T (
   Field    MYTYPE
);

将运行正常。 Sqlite正在应用所谓的数据类型affinity https://www.sqlite.org/datatype3.html#affinity来确定它将使用的一种已实现的数据类型,而不是指定它的CREATE TABLE。 DATETIME(以及MYTYPE)亲和力是NUMERIC - 一种特殊的亲和力,这意味着列可以存储您想要的任何类型,例如TEXT。

这归结为在Sqlite中使用DATETIME的唯一方法是datetime函数。这些功能使用默认时区UTC。必须明确提供任何其他时区作为日期时间字符串的一部分。没有PRAGMA或其他东西可以更改此默认值。

修改
如果expire_time当前是UTC时间的字符串表达式,则可以获得特定的时区文本值,例如

select datetime(expire_time, '+05 hours','+30 minutes') || ' IST' as t

如果字符串datetime(d,'utc')包含显式时区,则注意d很可能会返回NULL。因此,我建议您将日期时间标准化为UTC中的UTC,并将其转换为仅在生成输出时所需的不同时区。通过这种方式,您可以使用所有Sqlite工具带。