`
endual
  • 浏览: 3558337 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android sqlite用法

 
阅读更多

这是我学习SQLite时做的笔记,参考并翻译了Chris Newman写的《SQLite》中的《Working with Dates and Times》一文中的部分内容。
SQLite包含了如下时间/日期函数:
datetime().......................产生日期和时间
date()...........................产生日期
time()...........................产生时间
strftime().......................对以上三个函数产生的日期和时间进行格式化

datetime()的用法是:datetime(日期/时间,修正符,修正符...)
date()和time()的语法与datetime()相同。

在时间/日期函数里可以使用如下格式的字符串作为参数:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
其中now是产生现在的时间。
举例(写这个笔记的时间是2006年10月17日晚8点到10点,测试环境:SQLite 2.8.17,WinXP,北京时间):
例1.
select datetime('now');
结果:2006-10-17 12:55:54
例2.
select datetime('2006-10-17');
结果:2006-10-17 12:00:00
例3.
select datetime('2006-10-17 00:20:00','+1 hour','-12 minute');
结果:2006-10-17 01:08:00
例4.
select date('2006-10-17','+1 day','+1 year');
结果:2007-10-18
例5.
select datetime('now','start of year');
结果:2006-01-01 00:00:00
例6.
select datetime('now','start of month');
结果:2006-10-01 00:00:00
例7.
select datetime('now','start of day');
结果:2006-10-17 00:00:00
例8.
select datetime('now','+10 hour','start of day','+10 hour');
结果:2006-10-17 10:00:00
例9.
select datetime('now','localtime');
结果:2006-10-17 21:21:47
例10.
select datetime('now','+8 hour');
结果:2006-10-17 21:24:45
例3中的+1 hour和-12 minute表示可以在基本时间上(datetime函数的第一个参数)增加或减少一定时间。
例5中的start of year表示一年开始的时间。
从例8可以看出,尽管第2个参数加上了10个小时,但是却被第3个参数“start of day”把时间归零到00:00:00,随后的第4个参数在00:00:00
的基础上把时间增加了10个小时变成了10:00:00。

例9把格林威治时区转换成本地时区。

例10把格林威治时区转换成东八区。

strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
strftime()的语法是strftime(格式, 日期/时间, 修正符, 修正符, ...)

它可以用以下的符号对日期和时间进行格式化:
%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()的用法举例如下:
例11.
select strftime('%Y.%m.%d %H:%M:%S','now','localtime');
结果:2006.10.17 21:41:09

例11用圆点作为日期的分隔附,并把时间转换为当地的时区的时间。
更多关于SQLite日期时间函数方面的内容,可以参考Chris Newman写的《SQLite》(ISBN:0-672-32685-X)中的《Working with Dates and
Times》一文。
-----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
在做ClinicOS的时候遇到一个问题,在保存病历登记时间时,我使用了“CURRENT_TIMESTAMP”,但这有个问题,它返回的是UTC Time,这对我们中国人没啥用,

Where julianday(date('now', 'localtime')) - julianday(date(arrival_date)) > 7

嘿嘿,看来如果想得到一个符合本机区域设置的当前时间,必须用date函数来转换,
但date只函数只返回当前日期,而我需要的是返回当前日期及时间,所以这里把它换成datetime函数,即:
datetime(CURRENT_TIMESTAMP,'localtime')

以下是sqlite下测试的输出信息:
sqlite> select CURRENT_TIMESTAMP;
2006-06-18 09:23:36
sqlite> select datetime(CURRENT_TIMESTAMP,'localtime');
2006-06-18 17:23:44
sqlite>

--------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------

比如今天是:200-02-22

运行如下语句所得到的结果不一样:

select date('now')
结果:2009-02-21 

select datetime('now','localtime')
结果:2009-02-22 00:52:04 
--------------------------- 分隔线 --------------------------



所以比较时用第二种语句才取得正确结果,例如(取大于现在时间的记录):

select * from 表 where 日期字段>datetime('now','localtime')



好象没有MSSQL的datediff等函数

如下语句实现datediff('m',开始日期,结束日期')函数同一个数数据:

select * from 表 where strftime('%m',日期字段)=strftime('%m','now')

如此就可以实现了两个日期相比较,举一反三,同样使用strftime格式式日期来对日、周、年比较

参考Sqlite日期函数详细文档:

http://www.xueit.com/html/2009-02/27_649_00.html



--------------------------- 分隔线 如下收集于网络 -------------

select * from Placard where Placard_EndTime > datetime('now');

Select Placard_StartTime,strftime('%s',Placard_StartTime) , datetime('now'),strftime('%s','now') FROM Placard

差8个时区...

Select Placard_StartTime,strftime('%s',Placard_StartTime) , datetime('now','localtime'),strftime('%s','now','localtime') FROM Placard

上一条:大于指定时间的第一条         

select title,pubtime from article where pubtime>'2008-06-15 03:35:28' order by pubtime asc Limit 1 Offset 0

貌似时间的格式有严格的要求 2008-06-15 03:35:28 前面只能用 - 后面只能用:不足二位数的补零

下一条:小于指定时间的第一条

select title,pubtime from article where pubtime<'2008-06-15 03:35:28' order by pubtime desc Limit 1 Offset 0

注意时间的精度。03:35:28 后面就没有了。

03:35:28.000
 
分享到:
评论

相关推荐

    Android SQLite学习工具

    这篇博客“Android SQLite学习工具”可能详细介绍了如何在Android环境中使用SQLite进行数据操作,并提供了一个实用的SQLite管理工具——sqlite3.exe。 SQLite数据库在Android中的应用主要包括创建数据库、创建表、...

    android sqlite的使用方法

    以下是关于Android中SQLite的详细使用方法: 1. 创建SQLite数据库 - 首先,创建一个继承自`SQLiteOpenHelper`的类。这个类有两个关键的方法:`onCreate()`和`onUpgrade()`。`onCreate()`方法在数据库首次创建时被...

    Android SQLite用法演示

    本教程将通过一个实际的项目演示来详细介绍如何在Android中使用SQLite。 首先,我们需要创建一个SQLite数据库。在Android中,我们通常会创建一个继承自`SQLiteOpenHelper`的类,如`DatabaseHelper`。这个类有两个...

    Android数据库SQLite详解

    本文将深入探讨SQLite在Android中的使用,包括基本概念、数据库操作以及实际应用示例。 ### 1. SQLite基本概念 - **数据库**: 数据库是存储和组织数据的结构化系统,SQLite在Android中表现为一个数据库文件,扩展...

    sqlite-android,android sqlite支持库.zip

    开发者可以通过阅读源码和文档,了解其具体实现和使用方法,以充分利用这个库的优势。 总之,SQLite 在 Android 应用开发中扮演着至关重要的角色,它为本地数据存储提供了一个强大且灵活的解决方案。"sqlite-...

    Android SQLite源码+说明

    `Android&SQLite.doc`可能是文档部分,它可能包含以下内容:SQLite数据库的创建和打开,如何使用SQLiteOpenHelper类来管理数据库版本,SQLite表的创建语句,如何执行SQL查询,事务处理,以及如何在Android应用中插入...

    android sqlite的两种管理方法demmo

    本示例"android sqlite的两种管理方法demo"旨在介绍如何在Android应用中使用SQLite,包括通过Java API和Android SQLite数据库API进行数据库操作。 首先,让我们详细探讨**Java的SQLite管理方法**。在Android中,你...

    android之sqlite实现增删改查

    "Android之SQLite实现增删改查"这个标题表明了本文将介绍如何在Android平台中使用SQLite数据库来实现增删改查操作。 描述解释 "这是学习及开发SQlite的一个很好的例子,含有其增删改查的所有功能附有完整的代码可以...

    Android SQLite的基本操作Demo

    在Android应用开发中,SQLite是一个轻量级的关系型数据库,它被广泛用于存储应用程序的数据。SQLite数据库具有体积小、速度快、无需单独服务器进程等优点,非常适合嵌入式系统,如移动设备上的Android应用。本教程将...

    高清彩版 Android SQLite Essentials

    1. **基础知识**:介绍SQLite的基本概念、特点及其在Android平台上的集成方法。包括数据表的设计、SQL语言的基础知识等。 2. **数据管理**:详细讲解如何在Android应用程序中创建、读取、更新和删除数据库记录,...

    android sqlite 使用详解.pdf

    ### Android SQLite 使用详解 #### 一、SQLite简介与Android中的应用 SQLite是一种轻量级的数据库,被广泛应用于各种移动设备上,包括Android和iPhone。它支持标准的SQL语法,并且能够有效地处理复杂的查询和事务...

    android sqlite3 demo

    首先,我们来了解一下SQLite3在Android中的基本用法。在Android应用中,SQLite数据库通常通过`SQLiteOpenHelper`这个抽象类来创建和管理。`SQLiteOpenHelper`负责创建、升级数据库以及提供一个获取`SQLiteDatabase`...

    android sqlite greenDao类库

    然而,直接使用原生的SQLite API进行数据库操作可能会显得繁琐,因此出现了许多封装库来简化这一过程,其中GreenDao就是一款广受欢迎的Android SQLite ORM(对象关系映射)框架。 **GreenDao概述** GreenDao是一款...

    Android SQLite数据库操作Demo

    在Android应用开发中,SQLite是一个轻量级的关系型数据库,常用于存储应用程序中的结构化数据。...通过实践这个Demo,你可以深入理解SQLite数据库在Android中的使用,并为你的应用构建稳定的数据存储机制。

    android sqlite数据库框架

    在这个案例中,使用Java注解是一种创新的方法,它允许开发者在代码中添加元数据,使得程序在编译期间或运行时可以解析这些元数据,从而达到某种特定目的。例如,可以通过注解定义数据库表的结构,如表名、字段名和...

    android Sqlite数据库操作demo

    在Android开发中,SQLite是一个非常重要的组件,它是一个轻量级的数据库系统,适用于移动设备。SQLite被广泛用于存储和管理应用程序中的结构化数据。在这个"android Sqlite数据库操作demo"中,我们可以深入理解如何...

    android sqlite 简介

    通过理解SQLite内核、掌握Android下的使用方法以及熟悉Page Cache和事务处理机制,开发者可以有效地利用SQLite实现高效、可靠的数据存储。在实际开发中,还需要考虑数据安全、性能优化等方面,以提供更好的用户体验...

    android Sqlite基本操作

    为了提高性能和用户体验,可以使用异步任务或Android的`AsyncTask`来处理SQLite操作,避免阻塞主线程。 六、数据库升级 当需要更改数据库结构(如添加、删除或修改表)时,需要增加`DATABASE_VERSION`并实现`...

    AndroidSQLite.zip_android sqlite_androidsqlite _sqlite_sqlite3 a

    Android系统内置了SQLite库,使得开发者可以方便地在应用中使用SQLite数据库。 二、创建SQLite数据库 在Android中,SQLite数据库通常通过SQLiteOpenHelper类来创建和管理。这个类提供了onCreate()和onUpgrade()两个...

    android sqlite数据库 demo code

    在"android sqlite数据库 demo code"中,我们可以看到一个简单的Android应用示例,该示例演示了如何使用SQLite数据库进行数据的增删改查操作。下面将详细介绍这些关键知识点: 1. **SQLiteOpenHelper**: 这是...

Global site tag (gtag.js) - Google Analytics