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);
사용할 수있는 몇 가지 옵션이 있습니다.
- 대신 "(DATETIME ( 'now'))"문자열을 사용해 볼 수 있습니다.
- 날짜 시간을 직접 삽입하십시오. 즉 System.currentTimeMillis ()
- SQLite 테이블을 생성 할 때 created_date 열의 기본값을 현재 날짜 시간으로 지정하십시오.
- 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'로 표시되지 않았는지 확인합니다.
'IT' 카테고리의 다른 글
명령 줄 터미널에서 곱하기 (0) | 2020.08.09 |
---|---|
ASP.NET Web API에서 HTML 반환 (0) | 2020.08.09 |
IE에서 Flexbox가 세로로 가운데에 발생하지 않음 (0) | 2020.08.09 |
둘 이상의 리소스를 "사용"하면 리소스 누수가 수 있습니까? (0) | 2020.08.09 |
유효한 정수인지 테스트 (0) | 2020.08.09 |