我有一个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.html和http://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) 我试图找到在Android应用程序中使用sqlite数据库在我的两个表上进行简单表连接的最佳方法.是使用CursorJoiner最简单的方法还是有更简单的方法?
如果我在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方面不是很好,可能会有这种行为吗?这对我来说似乎很奇怪和不合逻辑:(.
我想知道是否可以使用单个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的记录的边缘情况并不特别担心,例如,如果我保留所有这些记录都没问题.
我想使用PhoneGap为iPhone实现SQLite数据库.我知道iPhone本机应用程序中的一些基础SQLite数据库.但是如何在PhoneGap中实现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数据库中有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个表连接到单个表中?
我有 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) 我正在构建一个python 3.6AWS Lambda部署包,并面临着一个问题SQLite.
在我的代码中,我使用的是nltk其中一个import sqlite3文件.
到目前为止的步骤:
部署包只有我在根目录中使用的python模块.我收到错误:
Unable to import module 'my_program': No module named '_sqlite3'
将_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)
将SQLite预编译的二进制文件添加sqlite.org到我的包的根目录,但我仍然得到错误点#2.
我的设置:Ubuntu 16.04,python3 virtual env
AWS lambda env: python3
我该如何解决这个问题?
在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) sqlite ×10
sql ×5
android ×3
database ×2
join ×2
aws-lambda ×1
cordova ×1
cursor ×1
date ×1
doctrine-orm ×1
go ×1
iphone ×1
java ×1
performance ×1
python-3.x ×1
symfony ×1
timestamp ×1