【问题标题】:Date in database changes to the current date数据库中的日期更改为当前日期
【发布时间】:2015-09-28 04:51:45
【问题描述】:

我正在保存数据的提交日期,但我插入的日期更改为当前日期

当你保存数据时

Calendar currentDate=Calendar.getInstance();
DatabaseOperations DB = new DatabaseOperations(ctx);
DB.putInformation(DB, done_today1 + "\n" + done_today2 + "\n" + done_today3, thankful_for1 + "\n" + thankful_for2 + "\n" + thankful_for3 + "\n" + thankful_for4 + "\n" + thankful_for5, for_relationship, for_kids, for_business, currentDate.get(Calendar.DATE) + "-" + currentDate.get(Calendar.MONTH) + "-" + currentDate.get(Calendar.YEAR));

将数据插入表中

public void putInformation(DatabaseOperations dop,String happenedToday,String thankfulFor,String forRelationship,String forKids,String forBusiness,String currentDate){
    SQLiteDatabase SQ=dop.getWritableDatabase();
    ContentValues cv=new ContentValues();
    cv.put(TableData.TableInfo.DONE_TODAY, happenedToday);
    cv.put(TableData.TableInfo.THANKFUL_FOR,thankfulFor);
    cv.put(TableData.TableInfo.FOR_RELATIONSHIP,forRelationship);
    cv.put(TableData.TableInfo.FOR_KIDS,forKids);
    cv.put(TableData.TableInfo.FOR_BUSINESS,forBusiness);
    cv.put(TableData.TableInfo.CURRENT_DATE,currentDate);
    SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv);
    Log.d("Database operations", "One Row Inserted");

当我以这种方式检索日期时

Cursor CR = dop.getInformation(dop);
CR.moveToFirst();
Toast.makeText(DisplayTable.this,""+CR.getString(5),Toast.LENGTH_LONG).show();

我得到的是当前日期,而不是提交数据的日期。

有人知道为什么会这样吗?

【问题讨论】:

    标签: android sqlite date


    【解决方案1】:

    在 SQL 中,CURRENT_DATE 是一个关键字,表示当前日期。

    要访问同名的列,你必须引用列名(双引号用于标识符;单引号用于字符串):

    > CREATE TABLE t(current_date);
    > INSERT INTO t VALUES('x');
    > SELECT current_date FROM t;
    2015-09-28
    > SELECT "current_date" FROM t;
    x
    > SELECT 'current_date' FROM t;
    current_date
    

    使用不同的列名可能会更好。

    【讨论】:

      【解决方案2】:

      处理日期和时间的最佳方式是始终使用 ISO 标准时间戳,即带有 T 和 Z 的时间戳。这使得在不同时区转换实际日期变得容易。

      还有一种方法是使用 unix 时间戳保存日期和时间,它是一个长整数,可以转换为不同时区的实际日期,因此它将始终根据您的时区反映正确的时间。

      【讨论】:

      • 谢谢,但它并没有真正解决问题,你看,问题是数据库中的日期每天都在更改为当前日期。例如,如果我今天提交数据,日期将是 28-9-2015。明天日期应该是 28-9-2015,而不是 29-9-2015。为什么会这样?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 2014-11-25
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多