Jak vložit záznam SQLite s datetime nastavena na ‚nyní‘ v aplikaci pro Android?

hlasů
102

Řekněme, že máme tabulku vytvořili jako:

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

Vložit záznam, tak bych používat

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

Ale jak nastavit DATE_CREATED sloupec teď ? Aby bylo jasné, je

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

Není správným řešením. Je to jen nastaví sloupec „datetime (‚nyní‘):“ textu.

Položena 16/04/2009 v 04:43
zdroj uživatelem
V jiných jazycích...                            


10 odpovědí

hlasů
186

Nelze použít funkci datetime pomocí Java wrapper „ContentValues“. Buď můžete použít:

  • SQLiteDatabase.execSQL takže si můžete zadat syrové SQL dotazu.

    mDb.execSQL("INSERT IGNORE  INTO "+DATABASE_TABLE+" VALUES (null, datetime()) ");
    
  • Nebo doba funkce datum 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);
    
Odpovězeno 04/05/2009 v 11:31
zdroj uživatelem

hlasů
37

V mém kódu používám DATETIME DEFAULT CURRENT_TIMESTAMPjako typ a omezení kolony.

Ve vašem případě by vaše definice tabulky se

create table notes (
  _id integer primary key autoincrement, 
  created_date date default CURRENT_DATE
)
Odpovězeno 21/03/2010 v 14:36
zdroj uživatelem

hlasů
24

metoda 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
);

metoda 2

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

Metoda 3 Pomocí java Datum funkcí

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);
Odpovězeno 09/11/2014 v 09:42
zdroj uživatelem

hlasů
7

Existuje několik možností, které můžete použít:

  1. Mohli byste zkusit pomocí řetězce „(DATETIME (‚nyní‘))“ místo.
  2. Vložte datetime sami, tedy s System.currentTimeMillis ()
  3. Při vytváření tabulky SQLite, zadat výchozí hodnotu pro sloupec CREATED_DATE jako aktuální datum a čas.
  4. Použijte SQLiteDatabase.execSQL vložit přímo.
Odpovězeno 16/04/2009 v 14:49
zdroj uživatelem

hlasů
6

Pro mě je problém vypadá, že jste odesílání "datetime('now')"jako řetězec, nikoli hodnotou.

Moje myšlenka je najít způsob, jak chytit aktuální datum / čas a poslat ji do databáze jako hodnotu data / času, nebo najít způsob, jak používat SQLite vestavěné (DATETIME('NOW'))parametru

Podívejte se na anwsers na tuto otázku SO.com - oni by mohli vést správným směrem.

Doufejme, že to pomáhá!

Odpovězeno 16/04/2009 v 08:33
zdroj uživatelem

hlasů
4

Můžete použít funkci Java, který je:

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

Tímto způsobem se ve vaší db uložíte číslo.
Toto číslo by mohlo být vykládáno tímto způsobem:

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

Namísto l do nové datum (l), shoul vložit číslo do sloupce data.
Takže máte termín.
Například i uložit ve svém db toto číslo: 1332342462078
Ale když jsem volání metody výše mám tento výsledek: 21-Mar-2012 16.07.42

Odpovězeno 21/03/2012 v 16:10
zdroj uživatelem

hlasů
2

na @ e-satis odpověď na bázi jsem vytvořil vlastní metodu na mých „DBTools“ třídy, takže přidání aktuální datum je nyní rychlé:

...
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);
        }
...

Použijte ji teď takhle: values.put("lastUpdate", getNow());

Odpovězeno 27/02/2014 v 02:18
zdroj uživatelem

hlasů
1

Tento příklad kódu může dělat, co chcete:

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

Odpovězeno 11/03/2013 v 23:38
zdroj uživatelem

hlasů
1

Pracuje pro mě perfektní:

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

Uložte si datum jako dlouhá.

Odpovězeno 05/08/2012 v 07:18
zdroj uživatelem

hlasů
0

Ujistěte se, že pole není označeno jako ‚není null‘ ve stejnou dobu jako vy se snažíte vložit výchozí časové razítko s použitím výrazu „(DATETIME (‚nyní‘))“

Odpovězeno 03/10/2017 v 13:09
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more