Как вставить метку времени в столбец базы данных SQLite? Используя время функции ('now')?

Я работаю над Android-приложением, и я создаю базу данных под названием HealthDev.db, которая имеет таблицу с именем rawData, которая имеет 4 столбца: _id, foreignUserId, data, timeStamp

Я работал с программой sqlite3 в оболочке bash и выяснил, что у меня может быть столбец временной отметки со следующим параметром схемы столбца: timeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP

Поэтому, когда я создал таблицу, я использовал: create table rawData (_id integer первичный ключ автоинкремент, foreignUserId целое, данные real, timeStamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

Это отлично работало в битве.

Затем я практиковал в sqlite3 и знаю, что при вставке в столбец timeStamp и использовании времени функции ('now') в качестве значения для его хранения на самом деле хранится метка времени в форме HH: MM: SS в Universal Coordinated Time.

Итак, теперь, переведя это в java для приложения для Android, я использовал следующий код ниже. Таким образом, таблица автоматически генерирует около 20 строк при вызове onCreate. Это просто для тестирования, если я правильно передаю время («сейчас») в java.

// Below are variables to the database table name and the // database column names. public static final String TABLE_RAW_DATA = "rawData"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_FOREIGN_USER_ID = "foreignUserId"; public static final String COLUMN_DATA = "data"; public static final String COLUMN_TIME_STAMP = "timeStamp"; // Database creation sql statement. private static final String DATABASE_CREATE = "create table " + TABLE_RAW_DATA + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_FOREIGN_USER_ID + " integer, " + COLUMN_DATA + " real, " + COLUMN_TIME_STAMP + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP" + ");"; // initializes the columns of the database given by passing the DATABASE_CREATE // sql statement to the incoming database. public static void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE); // For testing ContentValues contentValues = new ContentValues(); System.out.println("The database is open? " + database.isOpen()); for (int i = 0; i < 20; i++) { contentValues.put( COLUMN_FOREIGN_USER_ID, 8976); contentValues.put( COLUMN_DATA, Math.random()*100 ); contentValues.put( COLUMN_TIME_STAMP, " time('now') " ); database.insert( TABLE_RAW_DATA, null, contentValues ); //contentValues = new ContentValues(); } } 

После запуска этого кода в эмуляторе eclipse я вытащил файл базы данных из проводника файлов в режиме просмотра DDMS для проектов eclipse android. Затем я открыл базу данных в оболочке bash и затем выделил все столбцы из таблицы rawData, чтобы показать ее в оболочке. Я заметил, что время ('now') рассматривалось как строка, а не функция. Чтобы доказать, что функция time ('now') работала, я вручную вставил новую строку, используя time ('now') для значения timeStamp. Затем повторно выберите все столбцы, чтобы отобразить их снова. Он успешно напечатал временную букву как HH: MM: SS.

Я думаю, что может быть разница в окружающей среде? Оболочка bash распознает время функции ('now'), которое было написано в c справа ?, потому что у меня есть программа sqlite3 в bash? Однако в eclipse, когда я использую базу данных SQL и использую вставку, она обрабатывает время ('now') как строку. Имейте в виду, что я работаю в Windows 7 os. Я обращаюсь к bash как к клиенту (SSH Secure Shell) из моей школы, которая является хостом.

Мой главный вопрос – можно ли закодировать его так, чтобы он распознавал функцию времени («сейчас»)?

Solutions Collecting From Web of "Как вставить метку времени в столбец базы данных SQLite? Используя время функции ('now')?"