摘要:最近一直在學(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ō)清楚,SQLiteSQLite中,原始的存儲(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下的Date和Time分別是“閹割”了的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", new String[] { String.valueOf(startTime), String.valuesOf(endTime) });
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64408.html
摘要:前言數(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...
閱讀 1969·2021-11-22 15:29
閱讀 3271·2021-10-14 09:43
閱讀 1236·2021-10-08 10:22
閱讀 3357·2021-08-30 09:46
閱讀 1442·2019-08-30 15:55
閱讀 1938·2019-08-30 15:44
閱讀 861·2019-08-30 14:19
閱讀 1458·2019-08-30 13:13