Datetime SQLite3创建索引时拆分日期
我使用的是一个SQLite3数据库,我有一个如下表: 数据库相当大,运行查询的速度非常慢。我正试图通过索引一些列来加速这个过程。我想索引的一列是Datetime SQLite3创建索引时拆分日期,datetime,indexing,sqlite,Datetime,Indexing,Sqlite,我使用的是一个SQLite3数据库,我有一个如下表: 数据库相当大,运行查询的速度非常慢。我正试图通过索引一些列来加速这个过程。我想索引的一列是QUOTE\u DATETIME列 问题:我只想按日期(YYYY-MM-DD)索引,而不是按日期和时间(YYYY-MM-DD HH:MM:SS)索引,这是我当前在中引用的数据 问题:如何使用创建索引创建只使用YYYY-MM-DD格式日期的索引?我是否应该将QUOTE\u DATETIME分为两列:QUOTE\u DATE和QUOTE\u TIME?如果
QUOTE\u DATETIME
列
问题:我只想按日期(YYYY-MM-DD)索引,而不是按日期和时间(YYYY-MM-DD HH:MM:SS)索引,这是我当前在中引用的数据
问题:如何使用创建索引
创建只使用YYYY-MM-DD格式日期的索引?我是否应该将QUOTE\u DATETIME
分为两列:QUOTE\u DATE
和QUOTE\u TIME
?如果是,我该怎么做?有更简单的解决办法吗
谢谢你的帮助!:D
尝试1:我尝试运行在数据上创建索引id(date(QUOTE_DATETIME))
但我得到了错误错误:索引表达式中禁止使用非确定性函数
尝试2:我运行了altertabledata添加列QUOTE\u datetext
来创建一个新列以仅保存日期。然后插入数据(QUOTE\u DATE)从数据中选择日期(QUOTE\u DATETIME)
。date(QUOTE\u DATETIME)
应将日期+时间转换为仅日期,而插入到
应将新值添加到QUOTE\u date
。然而,它不起作用,我也不知道为什么。新列最终没有添加任何内容
表达式索引不得使用可能根据函数调用本身中未提及的数据更改其返回值的函数。date()
函数就是这样一个函数,因为它可能使用当前时区设置
但是,在SQLite 3.20或更高版本中,只要不使用任何时区修饰符,就可以在索引中使用date()
插入添加新行。要修改现有行,请使用:
1.谢谢你的解释。无论如何,这可能不是一个好的解决方案。2.这对我很有效,谢谢你解释为什么INSERT不起作用!
UPDATE Data SET Quote_Date = date(Quote_DateTime);