成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Android關(guān)于SQLite的日期時(shí)間的存儲(chǔ)

lwx12525 / 1143人閱讀

摘要:最近一直在學(xué)習(xí),由于的完全是半路出家,以前一直在用和之類的東西,對(duì)于時(shí)間和日期的處理,一直沒能弄得比較清楚。說(shuō)清楚,中,原始的存儲(chǔ)只有以下幾種文檔。有符號(hào)整數(shù),根據(jù)值的大小存儲(chǔ)在字節(jié)中。。浮點(diǎn)數(shù),儲(chǔ)存為字節(jié)的浮點(diǎn)數(shù)。。

最近一直在學(xué)習(xí)Android,由于Xana的Java完全是半路出家,以前一直在用C#、C++和Python之類的東西,對(duì)于時(shí)間和日期的處理,一直沒能弄得比較清楚。

說(shuō)清楚,SQLite

SQLite中,原始的存儲(chǔ)只有以下幾種(SQLite文檔):

NULL。只有null。

INTEGER。有符號(hào)整數(shù),根據(jù)值的大小存儲(chǔ)在1-4字節(jié)中。

REAL。浮點(diǎn)數(shù),儲(chǔ)存為8字節(jié)的IEEE浮點(diǎn)數(shù)。

TEXT。文字字符串,根據(jù)數(shù)據(jù)庫(kù)編碼存儲(chǔ)(UTF-8/UTF-16BE/UTF-16LE)

BLOB。純數(shù)據(jù)儲(chǔ)存。

Android和Java怎么做

Java中,時(shí)間和日期相關(guān)類主要是以下:

java.util.Date

和它的子類:

java.sql.Date

java.sql.Time

java.sql.Timestamp

以及相關(guān)的操作類:

java.util.Calendar

java.util.GregorianCalendar

用哪個(gè)?

其中,java.sql下的DateTime分別是“閹割”了的java.util.Date,而java.sql.Timestamp是強(qiáng)化版增加了微秒的java.util.Date,綜上所述,一般而言,用java.util.Date即可。

怎么用?

Java中日期和時(shí)間都是通過1970年后的毫秒數(shù)來(lái)儲(chǔ)存的,所以,我們?cè)跀?shù)據(jù)庫(kù)種只需要存儲(chǔ)日期時(shí)間的毫秒數(shù)即可,調(diào)用

java.util.Date date = new java.util.Date();
long datetime = date.getTime();

數(shù)據(jù)庫(kù)可以這么定義:

CREATE TABLE IF NOT EXISTS Journal(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    content TEXT,
    writeTime INTEGER
);

這個(gè)地方其實(shí)我被折騰了很久,因?yàn)镴ava中用long來(lái)存儲(chǔ)毫秒數(shù),即int64,但SQLite中只有INTEGER,后來(lái)看了文檔,這里的INTEGER是支持1-4字節(jié),即可以存儲(chǔ)long。

插入可以這么來(lái):

java.util.Date writeTime = new java.util.Date();
ContentValues values = new ContentValues();
values.put("content", content);
values.put("writeTime", writeTime.getTime());

按日期查找……WTF?

日期區(qū)間查找

由于在數(shù)據(jù)庫(kù)內(nèi)部使用了毫秒的方式儲(chǔ)存時(shí)間日期,那對(duì)于某一個(gè)日期,比如2015-07-21這一天的內(nèi)容如何查找?

其實(shí)也就是查找2015-07-21 00:00:00到2015-07-22 00:00:00之間的數(shù)值,我們?cè)煲粋€(gè)就是了。

首先,獲取當(dāng)前時(shí)間

Date now = new Date();

將它處理:

GregorianCalendar cal = new GregorianCalendar();
cal.setTime(now);
//可以根據(jù)需要設(shè)置時(shí)區(qū)
//cal.setTimeZone(TimeZone.getDefault());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
//毫秒可根據(jù)系統(tǒng)需要清除或不清除
cal.set(Calendar.MILLISECOND, 0);
long startTime = cal.getTimeInMillis();

結(jié)束時(shí)間加上即可:

long endTime = startTime + 24 * 3600 * 1000;

現(xiàn)在就可以查詢了:

Cursor cursor = db.rawQuery("SELECT * FROM Journal WHERE “ +
    ”writeTime>=? and writeTime           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64408.html

相關(guān)文章

  • Android存儲(chǔ)方式之SQLite

    摘要:前言數(shù)據(jù)庫(kù)操作在開發(fā)中非常常用今天我將帶大家全面了解關(guān)于數(shù)據(jù)庫(kù)的操作增刪查改目錄數(shù)據(jù)庫(kù)介紹是內(nèi)置的一個(gè)小型關(guān)系型屬于文本型的數(shù)據(jù)庫(kù)。提供了對(duì)數(shù)據(jù)庫(kù)的完全支持,應(yīng)用程序中的任何類都可以通過名稱來(lái)訪問任何的數(shù)據(jù)庫(kù),但是應(yīng)用程序之外的就不能訪問。 前言 SQLite數(shù)據(jù)庫(kù)操作在Android開發(fā)中非常常用 今天我將帶大家全面了解關(guān)于SQLite數(shù)據(jù)庫(kù)的操作(增、刪、查、改) 目錄 sho...

    rainyang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<