IT

Android 애플리케이션에서 datetime이 'now'로 집합 SQLite 레코드를 삽입하는 방법은 무엇입니까?

lottoking 2020. 8. 9. 09:18
반응형

Android 애플리케이션에서 datetime이 'now'로 집합 SQLite 레코드를 삽입하는 방법은 무엇입니까?


다음과 같이 생성 된 테이블이 있습니다.

create table notes (_id integer primary key autoincrement, created_date date)

레코드를 삽입 광고

ContentValues initialValues = new ContentValues(); 
initialValues.put("date_created", "");
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);

하지만 date_created 열을 지금으로 설정하는 방법 무엇입니까? 명확하게하기 위해

initialValues.put("date_created", "datetime('now')");

올바른 해결책이 아닙니다. 열을 "datetime ( 'now')"텍스트로 설정합니다.


Java 랩퍼 "ContentValues"를 사용하여 datetime 함수를 사용할 수 없습니다. 다음을 사용할 수 있습니다.

  • SQLiteDatabase.execSQL을 사용하여 원시 SQL 쿼리를 입력 할 수 있습니다.

    mDb.execSQL("INSERT INTO "+DATABASE_TABLE+" VALUES (null, datetime()) ");
    
  • 또는 자바 날짜 시간 기능 :

    // set 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_created", dateFormat.format(date));
    long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
    

내 코드에서는 DATETIME DEFAULT CURRENT_TIMESTAMP열의 유형과 제약 조건으로 사용합니다.

귀하의 경우 귀하의 테이블

create table notes (
  _id integer primary key autoincrement, 
  created_date date default CURRENT_DATE
)

방법 1

CURRENT_TIME – Inserts only time
CURRENT_DATE – Inserts only date
CURRENT_TIMESTAMP – Inserts both time and date

CREATE TABLE users(
    id INTEGER PRIMARY KEY,
    username TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

방법 2

db.execSQL("INSERT INTO users(username, created_at) 
            VALUES('ravitamada', 'datetime()'");

3 가지 방법 중 3 : 자바 날짜 함수 사용하기

private String getDateTime() {
        SimpleDateFormat dateFormat = new SimpleDateFormat(
                "yyyy-MM-dd HH:mm:ss", Locale.getDefault());
        Date date = new Date();
        return dateFormat.format(date);
}

ContentValues values = new ContentValues();
values.put('username', 'ravitamada');
values.put('created_at', getDateTime());
// insert the row
long id = db.insert('users', null, values);

사용할 수있는 몇 가지 옵션이 있습니다.

  1. 대신 "(DATETIME ( 'now'))"문자열을 사용해 볼 수 있습니다.
  2. 날짜 시간을 직접 삽입하십시오. 즉 System.currentTimeMillis ()
  3. SQLite 테이블을 생성 할 때 created_date 열의 기본값을 현재 날짜 시간으로 지정하십시오.
  4. SQLiteDatabase.execSQL사용 하여 직접 삽입 하십시오 .

나에게 문제는 "datetime('now')"값이 아닌 문자열로 보내는 것처럼 보입니다 .

내 생각은 현재 날짜 / 시간을 가져 와서 데이터베이스에 날짜 / 시간 값으로 보내는 방법을 찾거나 SQLite의 내장 (DATETIME('NOW'))매개 변수 를 사용하는 방법을 찾는 것입니다.

이 SO.com 질문 에서 답변을 확인하세요 . 올바른 방향으로 안내 할 수 있습니다.

도움이 되었기를 바랍니다.


다음과 같은 Java 기능을 사용할 수 있습니다.

ContentValues cv = new ContentValues();
cv.put(Constants.DATE, java.lang.System.currentTimeMillis());  

이런 식으로 db에 숫자를 저장합니다.
이 숫자는 다음과 같이 해석 될 수 있습니다.

    DateFormat dateF = DateFormat.getDateTimeInstance();
    String data = dateF.format(new Date(l));

new Date (l)에 l 대신 숫자를 date 열에 삽입합니다.
그래서, 당신은 당신의 데이트가 있습니다.
예를 들어 DB에 다음 번호를 저장합니다 : 1332342462078
하지만 위의 메서드를 호출하면 결과가 다음과 같습니다. 21-mar-2012 16.07.42


@ e-satis 답변을 기반으로 "DBTools"클래스에 개인 메서드를 만들었으므로 현재 날짜를 추가하는 것이 정말 쉽습니다.

...
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
...
        private String getNow(){
            // set the format to sql date time
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = new Date();
            return dateFormat.format(date);
        }
...

다음과 같이 지금 사용하십시오. values.put("lastUpdate", getNow());


나를 위해 완벽하게 작동합니다.

    values.put(DBHelper.COLUMN_RECEIVEDATE, geo.getReceiveDate().getTime());

날짜를 오래 저장하십시오.


이 코드 예제는 원하는 작업을 수행 할 수 있습니다.

http://androidcookbook.com/Recipe.seam?recipeId=413


"(DATETIME ( 'now'))"표현식을 사용하여 기본 타임 스탬프를 삽입하려는 동시에 필드가 'not null'로 표시되지 않았는지 확인합니다.

참고 URL : https://stackoverflow.com/questions/754684/how-to-insert-a-sqlite-record-with-a-datetime-set-to-now-in-android-applicatio

반응형