在学习Android开发的过程中,遇到一个需求,就是要保存当前用户当天的数据,前一天的数据要在用户登陆时自动删除,在网上查找了下资料完成了这个litepal数据库的sql语句, 今天在此把它记录下来,方便不时之需。下面是删除数据的代码: DataSupport.deleteAll(AttentionPerson.class,"DATE(recordTime) <= DATE('now', '-1 day', 'localtime')"); 解释一下:recordTime是我定义的时间,类型是String,
DATE(recordTime)是把String类型的recordTime转换成日期型,
DATE('now', '-1 day', 'localtime')是取出当前的本地时间再往前推一天,即得到前一天的时间,再通过Date转换成日期型
以下是学习的资料:(转自http://www.jb51.net/article/50046.htm)
代码如下:
create_index = 'CREATE INDEX IF NOT EXISTS idx_id ON test_table (id);' cur.execute(create_table_stmt) cur.execute(create_index) conn.commit()
然后往里面插一点数据吧,SQLite只支持5种基本的数据类型
问题来了,SQLite的时间和日期类型在哪里?原来SQLite可以把时间日期保存在一下几种数据类型里面
insert_stmt = 'insert into test_table values (?, ?, ?)' record = (123, '2011-11-30 12:34:56', 'hello world') cur.execute( insert_stmt, record ) conn.commit()
查看表结构 select * from sqlite_master 查看表信息 PRAGMA table_info (table_name)
SQLite中的时间日期函数
SQLite包含了如下时间/日期函数:
datetime()的用法是:datetime(日期/时间,修正符,修正符...) date()和time()的语法与datetime()相同。
在时间/日期函数里可以使用如下格式的字符串作为参数:
举例(写这个笔记的时间是2006年10月17日晚8点到10点,北京时间):
select datetime('2006-10-17'); 结果:2006-10-17 12:00:00
select datetime('2006-10-17 00:20:00', '+1 hour', '-12 minute'); 结果:2006-10-17 01:08:00
select date('2006-10-17', '+1 day', '+1 year'); 结果:2007-10-18
select datetime('now', 'start of year'); 结果:2006-01-01 00:00:00
select datetime('now', 'start of month'); 结果:2006-10-01 00:00:00
select datetime('now', 'start of day'); 结果:2006-10-17 00:00:00
# 尽管第2个参数加上了10个小时,但是却被第3个参数 start of day 把时间归零到00:00:00 # 随后的第4个参数在00:00:00的基础上把时间增加了10个小时变成了10:00:00。 select datetime('now', '+10 hour', 'start of day', '+10 hour'); 结果:2006-10-17 10:00:00
# 把格林威治时区转换成本地时区。 select datetime('now', 'localtime'); 结果:2006-10-17 21:21:47
select datetime('now', '+8 hour'); 结果:2006-10-17 21:24:45
它可以用以下的符号对日期和时间进行格式化: %d 月份, 01-31 %f 小数形式的秒,SS.SSS %H 小时, 00-23 %j 算出某一天是该年的第几天,001-366 %m 月份,00-12 %M 分钟, 00-59 %s 从1970年1月1日到现在的秒数 %S 秒, 00-59 %w 星期, 0-6 (0是星期天) %W 算出某一天属于该年的第几周, 01-53 %Y 年, YYYY %% 百分号
strftime() 的用法举例如下: