una - sqlite android tutorial español
¿Cómo insertar un registro SQLite con un horario establecido en ''ahora'' en la aplicación Android? (10)
Diga, tenemos una tabla creada como:
create table notes (_id integer primary key autoincrement, created_date date)
Para insertar un registro, usaría
ContentValues initialValues = new ContentValues();
initialValues.put("date_created", "");
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
Pero, ¿cómo configurar la columna date_created para ahora ? Para dejar en claro, el
initialValues.put("date_created", "datetime(''now'')");
No es la solución correcta. Simplemente establece la columna en el texto "datetime (''now'')".
Asegúrese de que el campo no esté marcado como ''no nulo'' al mismo tiempo que intenta insertar una marca de tiempo predeterminada utilizando la expresión "(DATETIME (''now''))"
Basado en la respuesta de @e-satis, creé un método privado en mi clase "DBTools", por lo que ahora es muy fácil agregar la fecha actual:
...
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);
}
...
Úselo ahora así: values.put("lastUpdate", getNow());
En mi código, uso DATETIME DEFAULT CURRENT_TIMESTAMP
como el tipo y la restricción de la columna.
En su caso, la definición de su tabla sería
create table notes (
_id integer primary key autoincrement,
created_date date default CURRENT_DATE
)
Este ejemplo de código puede hacer lo que desee:
Funciona para mí perfecto:
values.put(DBHelper.COLUMN_RECEIVEDATE, geo.getReceiveDate().getTime());
Guarde su fecha como un largo.
Hay un par de opciones que puede usar:
- Podría intentar usar la cadena "(DATETIME (''now''))" en su lugar.
- Inserte la fecha y hora usted mismo, es decir, con System.currentTimeMillis ()
- Al crear la tabla SQLite, especifique un valor predeterminado para la columna created_date como la fecha actual.
- Use SQLiteDatabase.execSQL para insertar directamente.
No puede usar la función de fecha y hora utilizando el envoltorio Java "Valores de contenido". O puede usar:
SQLiteDatabase.execSQL para que pueda ingresar una consulta SQL sin procesar.
mDb.execSQL("INSERT INTO "+DATABASE_TABLE+" VALUES (null, datetime()) ");
O las capacidades de fecha y hora java:
// 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);
Para mí, el problema parece ser que estás enviando "datetime(''now'')"
como una cadena, en lugar de un valor.
Mi idea es encontrar una forma de tomar la fecha / hora actual y enviarla a su base de datos como un valor de fecha / hora, o encontrar una forma de usar el parámetro incorporado de SQLite (DATETIME(''NOW''))
Eche un vistazo a los comentarios en esta pregunta de SO.com : pueden guiarlo en la dirección correcta.
¡Espero que esto ayude!
Puedes usar la función de java que es:
ContentValues cv = new ContentValues();
cv.put(Constants.DATE, java.lang.System.currentTimeMillis());
De esta forma, en tu db guardas un número.
Este número podría interpretarse de esta manera:
DateFormat dateF = DateFormat.getDateTimeInstance();
String data = dateF.format(new Date(l));
En lugar de l en una nueva Fecha (l), debe insertar el número en la columna de fecha.
Entonces, tienes tu cita.
Por ejemplo, guardo en mi db este número: 1332342462078
Pero cuando llamo al método anterior, tengo este resultado: 21-mar-2012 16.07.42
Método 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
);
Método 2
db.execSQL("INSERT INTO users(username, created_at)
VALUES(''ravitamada'', ''datetime()''");
Método 3 de 3: Usar las funciones de fecha de Java
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);