我一直在搜索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的所有时间的更新查询来帮助我。
感谢。
修改
答案 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工具带。