标签: sqlite

如何比较sqlite TIMESTAMP值

我有一个Sqlite数据库,我想在其中选择TIMESTAMP列中的值在某个特定日期之前的行.我认为这很简单,但我无法完成.我试过这个:

SELECT * FROM logged_event WHERE logged_event.CREATED_AT < '2010-05-28 16:20:55'
Run Code Online (Sandbox Code Playgroud)

和日期函数一样,它有各种变化.我已经阅读了http://sqlite.org/lang_datefunc.htmlhttp://www.sqlite.org/datatypes.html,我希望该列是一个数字类型,并且比较将在unix时间戳值.显然不是.有谁可以提供帮助?如果重要的话,我在Sqlite Expert Personal中尝试这个.

编辑:

这是类型表描述:

CREATE TABLE [logged_event]
(
[id] INTEGER  NOT NULL PRIMARY KEY,
[created_at] TIMESTAMP,
[name] VARCHAR(64),
[data] VARCHAR(512)
);
Run Code Online (Sandbox Code Playgroud)

并且测试数据:

INSERT INTO table VALUES(1,'2010-05-28T15:36:56+0200','test','test');
INSERT INTO table VALUES(2,'2010-05-28T16:20:49+0200','test','test');
INSERT INTO table VALUES(3,'2010-05-28T16:20:51+0200','test','test');
INSERT INTO table VALUES(4,'2010-05-28T16:20:52+0200','test','test');
INSERT INTO table VALUES(5,'2010-05-28T16:20:53+0200','test','test');
INSERT INTO table VALUES(6,'2010-05-28T16:20:55+0200','test','test');
INSERT INTO table VALUES(7,'2010-05-28T16:20:57+0200','test','test');
Run Code Online (Sandbox Code Playgroud)

sql sqlite timestamp

23
推荐指数
1
解决办法
6万
查看次数

在android中使用sqlite连接表的最佳方法

我试图找到在Android应用程序中使用sqlite数据库在我的两个表上进行简单表连接的最佳方法.是使用CursorJoiner最简单的方法还是有更简单的方法?

java sqlite android join cursor

23
推荐指数
1
解决办法
2万
查看次数

SQLite中的SELECT*,COUNT(*)

如果我在SQLite中执行标准查询:

SELECT * FROM my_table
Run Code Online (Sandbox Code Playgroud)

我按预期在表格中获得了所有记录.如果我执行以下查询:

SELECT *, 1 FROM my_table
Run Code Online (Sandbox Code Playgroud)

我按预期获得所有记录,最右边的列在所有记录中保持"1".但是,如果我执行查询:

SELECT *, COUNT(*) FROM my_table
Run Code Online (Sandbox Code Playgroud)

我只获得一行(最右边的列是正确的计数).为什么有这样的结果?我在SQL方面不是很好,可能会有这种行为吗?这对我来说似乎很奇怪和不合逻辑:(.

sql sqlite

23
推荐指数
4
解决办法
10万
查看次数

sqlite相当于row_number()over(分区由......?

我想知道是否可以使用单个sqlite语句执行以下操作:

我的表看起来像这样:

|AnId|UserId|SomeDate|SomeData|
|123 |A     |1/1/2010|aadsljvs|
| 87 |A     |2/9/2010|asda fas|
|193 |A     |2/4/2010|aadsljvs|
|927 |A     |7/3/2010|aadsasdf|
|816 |B     |1/1/2010|aa32973v|
|109 |B     |7/5/2010|aaasfd10|
| 39 |B     |1/3/2010|66699327|
...
Run Code Online (Sandbox Code Playgroud)

每行都有唯一的ID,用户ID,日期时间值和一些其他数据.

我想删除记录,以便根据SomeDate保留每个用户的最新10条记录.

在SQL Server中我会使用这样的东西:

delete d
from data d
inner join (
    select UserId
        ,  AnId
        ,  row_number() over ( partition by UserId order by SomeDate desc ) 
              as RowNum
    from data 
) ranked on d.AnId = ranked.AnId
where ranked.RowNum > 10
Run Code Online (Sandbox Code Playgroud)

有没有办法在sqlite中执行此操作?有几个具有相同SomeDate的记录的边缘情况并不特别担心,例如,如果我保留所有这些记录都没问题.

sql sqlite

23
推荐指数
1
解决办法
3万
查看次数

PhoneGap上的SQLite数据库

我想使用PhoneGap为iPhone实现SQLite数据库.我知道iPhone本机应用程序中的一些基础SQLite数据库.但是如何在PhoneGap中实现SQLite数据库呢?

sqlite iphone cordova

23
推荐指数
3
解决办法
5万
查看次数

如何在symfony2项目上使用sqlite数据库?

在Symfony2项目中,您可以在app/config/parameters.ini文件中配置数据库连接.文档说明您可以使用sqlite3 PDO驱动程序.

但配置sqlite不能很好地工作:

[parameters]
    database_driver   = pdo_sqlite
    database_host     = localhost
    database_port     =
    database_name     = test_project.db
    database_user     = root
    database_password = 
Run Code Online (Sandbox Code Playgroud)

使用app/console doctrine:database:create,在项目根目录下成功创建test_project.db文件.

但是在创建了一些实体之后,然后运行app/console doctrine:schema:update --force应该在数据库文件上创建表,但它没有,文件显示为空,O字节大小.

请注意,使用任何其他PDO驱动程序效果很好,但不能使用SQLite ...

我还尝试在database_name参数中使用db文件的完整路径,但无济于事,数据库仍然没有得到更新.

作为参考,这是config.yml文件的doctrine dbal部分:

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8
Run Code Online (Sandbox Code Playgroud)

有没有解决的办法?配置缺失?在symfony2项目的官方文档中没有说明的内容?

sqlite symfony doctrine-orm

23
推荐指数
2
解决办法
4万
查看次数

在SQLite数据库中加入3个表

我在SQLite数据库中有3个表:

歌曲:

_id | name | length | artist_id (foreign key) | album_id (foreign key)
Run Code Online (Sandbox Code Playgroud)

艺术家:

_id | name
Run Code Online (Sandbox Code Playgroud)

专辑:

_id | name
Run Code Online (Sandbox Code Playgroud)

我需要一个包含以下列的表的查询(在Android应用程序中使用它):

_id | name | length | artist_id | artist_name | album_id | album_name
Run Code Online (Sandbox Code Playgroud)

但是,我编写以下查询语句:

SELECT Songs._id, Songs.name, Songs.length, Songs.artist_id, Artists.name, Songs.album_id, Albums.name FROM Songs, Artists, Albums WHERE Songs.artist_id = Artists._id AND Songs.album_id = Albums._id
Run Code Online (Sandbox Code Playgroud)

但它给了我一张空桌子.我尝试了OR而不是AND并且它给出了不正确的结果(每首歌中的每首歌都重复,尽管艺术家是正确的).如何修复查询语句以将3个表连接到单个表中?

sql database sqlite android join

23
推荐指数
1
解决办法
4万
查看次数

如何在sqlite数据库中添加日期

我有 sqlite database

    private static final String DB_PROCESS_CREATE = "create table "
        + DB_TABLE_PROCESS + "(" + PROCESS_ID
        + " integer primary key autoincrement, "
        + PROCESS_DATE + " date);";
Run Code Online (Sandbox Code Playgroud)

我创造它 db.execSQL(DB_PROCESS_CREATE);

如何在此数据库中添加日期值?我试过了 :

String date = new SimpleDateFormat("yyyy.MM.dd").format(Calendar
.getInstance().getTime());
ContentValues cv = new ContentValues();
cv.put(db.PROCESS_DATE,Date.valueOf(date));
db.mDB.insert(db.DB_TABLE_PROCESS, null, cv));
Run Code Online (Sandbox Code Playgroud)

但后来我得到error:

"The method put(String, String) in the type ContentValues is not applicable for the arguments (String, Date)".
Run Code Online (Sandbox Code Playgroud)

database sqlite android date

23
推荐指数
2
解决办法
6万
查看次数

使用Python 3在AWS lambda上出现sqlite3错误

我正在构建一个python 3.6AWS Lambda部署包,并面临着一个问题SQLite.

在我的代码中,我使用的是nltk其中一个import sqlite3文件.

到目前为止的步骤:

  1. 部署包只有我在根目录中使用的python模块.我收到错误: Unable to import module 'my_program': No module named '_sqlite3'

  2. 将_sqlite3.so添加/home/my_username/anaconda2/envs/py3k/lib/python3.6/lib-dynload/_sqlite3.so到包根目录中.然后我的错误改为:

    Unable to import module 'my_program': dynamic module does not define module export function (PyInit__sqlite3)

  3. 将SQLite预编译的二进制文件添加sqlite.org到我的包的根目录,但我仍然得到错误点#2.

我的设置:Ubuntu 16.04,python3 virtual env

AWS lambda env: python3

我该如何解决这个问题?

sqlite amazon-web-services python-3.x aws-lambda

23
推荐指数
3
解决办法
6076
查看次数

更快的sqlite 3查询?我需要尽可能快地处理100万行

在golang中读取sqlite3表的最快方法是什么?

package main

import (
    "fmt"
    "database/sql"
    _ "github.com/mattn/go-sqlite3"
    "log"
    "time"
)

func main() {
    start := time.Now()

    db, err := sql.Open("sqlite3", "/Users/robertking/go/src/bitbucket.org/thematicanalysis/optimization_test/robs.db")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()
    rows, err := db.Query("select * from data")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    for rows.Next() {
    }
    err = rows.Err()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(time.Since(start))
}
Run Code Online (Sandbox Code Playgroud)

这在Go中需要8秒,因为速度.Next.在python fetchall中只需4秒!我在GO中重写以获得性能而不是失去性能.

这是python代码,我找不到相应的fetchallgo:

import time

start = time.time() …
Run Code Online (Sandbox Code Playgroud)

sql sqlite performance go

23
推荐指数
1
解决办法
1873
查看次数