2012-10-28 48 views
5

datetime verilerini, sqlite veritabanımda ham sorgu kullanılmayan contentvalues ​​kullanarak nasıl ekleyebilirim?sqlite veritabanında datetime ekleme android

datetime ('now') kendisini (metin) ekleyemez ve şu anki saate ekleyebilir miyim?

gibi

i basın düğmesi "1saat" o .. tür karıştı, sqlite database..thanks milisaniye için

cevap

6

dönüştürme tarih/saat CurrentTime + 1 saat eklemek istiyorum ve bir long olsun. Ardından veritabanında long değerini eklersiniz.

Milisaniye cinsindeyse tarih/saat değerlerini birlikte ekleyebilirsiniz.

Date myDate = new Date(); 
    long timeMilliseconds = myDate.getTime(); 
    //add 1 hour 
    timeMilliseconds = timeMilliseconds + 3600 * 1000; //3600 seconds * 1000 milliseconds 
    //To convert back to Date 
    Date myDateNew = new Date(timeMilliseconds); 

--EDITED--

SQLite'ta Java long değeri int olarak depolanır.

+0

formülünü kullanıp kullanmamaya devam ederseniz, bana sözdizimini gösterebilirsiniz, gerçekten clueless im… nasıl dönüştürebilirim? – mcr619619

+1

Cevabım eklendiğinde – Luis

+0

Teşekkürler, ihtiyacım olan şey bu .. uzun, her şeyi eklediğimde, alıp istediğim şekilde değiştirebiliyorum, ancak biçimlendirilmiş bir şekilde (YYYY-DD) eklediğimde -MM) Bunu geri alamıyorum, eğer uzun bir süre sonra geri alırsam, sadece yılı geri alır ve eğer getString ile, onun sadece bir dizgisi, onu gerçek milyara çeviremezsem, etrafta bir iş var mıdır? Ben uzun bir yöntem kullanabilir, ancak okunabilir bir veritabanı ise daha kullanışlı olurdu. Teşekkürler ... bana – mcr619619

1

Java sarıcı "ContentValues" öğesini kullanarak datetime işlevlerini kullanamazsınız. Bu şekilde uygulayabilirsiniz:

1) Sen useSQLiteDatabase.execSQL (ham SQL sorgusu)

dbObj.execSQL("INSERT INTO "+DATABASE_TABLE+" VALUES (null, datetime()) "); 

2) Sen

// setting the format to sql date time 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date date = new Date(); 
ContentValues initialValues = new ContentValues(); 
initialValues.put("date_time", dateFormat.format(date)); 
long recordId = mDb.insert(DB_TABLE_NAME, null, initialValues); 

3) Eğer tarih değerini depolamak SimpleDateFormat

kullanabilirsiniz edebilirsiniz (uzun tip) milisaniye olarak veritabanı ve bunu biçimlendirmek için biçimlendirebilirsiniz, görüntüleyebildiğiniz biçimde biçimlendirebilirsiniz,

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 

System.out.println(getDate(82233213123L, "dd/MM/yyyy hh:mm:ss.SSS")); 

// Return date in specified format. 
// milliSeconds Date in milliseconds 
// dateFormat Date format 
// return date as string in specified format 

public static String formatDate(long milliSeconds, String dateFormat) 
{ 

    DateFormat formatter = new SimpleDateFormat(dateFormat); 

// Create a calendar object that will convert the date and time value in milliseconds to date. 
    Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(milliSeconds); 
return formatter.format(calendar.getTime()); 
    } 
} 

1 Saniye = 1000 M illiseconds, bu yüzden 1 saat eklemek istiyorsanız

+0

ikincisi kullandım, ama system.currentmills kullanarak, sonra biçimlendirme .. teşekkürler. Çalışıyor, şimdi yeni bir sorum var, eğer tarihi alırsam, "2012-10-28 09:58:15" nasıl system.currentmillis'in kullandığı biçime dönüştürebilirim? Buna ihtiyacım var çünkü başvurumun şu anki zamanı belirli bir süreyle karşılaştırması gerekiyor (bu durumda, + 1 saat) – mcr619619