Android 如何在SQLite Using Room中使用DateTime数据类型?

Android 如何在SQLite Using Room中使用DateTime数据类型?,android,sqlite,android-sqlite,android-room,Android,Sqlite,Android Sqlite,Android Room,我正在使用带有多个表的SQLite数据库。其中许多列的类型为DATETIME 我已开始将数据库迁移到文件室。但我不知道在entity类中使用什么数据类型来创建表中列的DATETIME类型。您需要使用TypeConvertor 定义类型转换器如下 public class TimestampConverter { static DateFormat df = new SimpleDateFormat(Constants.TIME_STAMP_FORMAT); @TypeConve

我正在使用带有多个表的SQLite数据库。其中许多列的类型为DATETIME


我已开始将数据库迁移到文件室。但我不知道在entity类中使用什么数据类型来创建表中列的DATETIME类型。

您需要使用TypeConvertor

定义类型转换器如下

public class TimestampConverter {
    static DateFormat df = new SimpleDateFormat(Constants.TIME_STAMP_FORMAT);

    @TypeConverter
    public static Date fromTimestamp(String value) {
        if (value != null) {
            try {
                return df.parse(value);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return null;
        } else {
            return null;
        }
    }
}
@TypeConverters
注释添加到日期类型的字段中

@ColumnInfo(name = "created_date")
@TypeConverters({TimestampConverter.class})
public Date createDate;

这种方法将列数据类型创建为文本而不是日期时间。那么,如何创建DATETIME类型的列呢?在typeconverter中也有将字符串转换为日期的方法,但不能将日期转换为字符串。那么日期到字符串的转换将如何进行呢?SQLite没有像MySQL或其他SQL实现那样的日期时间数据类型。我想你已经在使用字符串了。无论如何,答案中的TypeConvertor是房间里的标准方法。我建议使用时间戳作为整数而不是文本。无法解析时间戳格式。你知道怎么回事吗?定义你想使用的时间格式。@gentler使用这个
“yyyy-MM-dd HH:MM:ss”