Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android/JavaSQLite:如何检索最大日期时间?_Java_Android_Sqlite - Fatal编程技术网

Android/JavaSQLite:如何检索最大日期时间?

Android/JavaSQLite:如何检索最大日期时间?,java,android,sqlite,Java,Android,Sqlite,下面是我从sqlite db得到的查询的快照 在谷歌搜索和阅读了大量的问题之后,我知道使用聚合函数(如max())检索最大日期时间是不可能的,因为sqlite不支持太多的数据类型,而是将数据类型视为text 因此,我将这些数据放在列表或java级别。那么我现在如何从这个列表中获得最大日期时间呢 java中是否有这种格式的直接构造。或者我们是否有我找不到的sqlite级别的东西 一种常见的方法是将转换后的数据尽可能长地存储起来 使用date.getTime()从日期实例中获取较长时间,并date-

下面是我从sqlite db得到的查询的快照

在谷歌搜索和阅读了大量的问题之后,我知道使用聚合函数(如
max()
)检索最大日期时间是不可能的,因为sqlite不支持太多的数据类型,而是将数据类型视为
text

因此,我将这些数据放在
列表
java
级别。那么我现在如何从这个列表中获得最大日期时间呢

java中是否有这种格式的直接构造。或者我们是否有我找不到的sqlite级别的东西


一种常见的方法是将转换后的数据尽可能长地存储起来

使用
date.getTime()
从日期实例中获取较长时间,并
date-date=new-date(时间戳)
从时间戳中获取日期对象


一旦数据库中有长文本,您就可以执行任何您想要的排序/比较。

文本可以在SQLite中进行比较、排序和排序

您的格式似乎是YYYY-MM-dd hh:MM:ss。幸运的是,订购这种格式会导致按日期订购

只是


(或者,第二个不完全确定)

如果您设置了datetime字段文本的类型,则可以执行以下查询 但是日期时间必须是
yyyy-mm-dd hh:mm:ss

select max(datetime) from tableName;

要从一组时间类型(字符串)中检索最大值,我们必须使用子字符串进行连接。使用此查询,可以使用sql lite查找最大或最小时间

select max(datetime(case 
when substr(TimeIn,7,2)='PM' 
then substr(TimeIn,1,2)+12 
else substr(TimeIn,1,2) 
end  || ':' || substr(TimeIn,4,2) || ':' || '00'))  
from tablename 
where Date='10/06/2016'

如果您使用自动递增的唯一id,那么理论上最高的唯一id应该为您提供最近的日期时间。基本上,我希望
current\u test\u id
其中
test\u datetime
为最大值。尽可能长地使用max和sort dates(但是,您的格式也可以工作,因为它看起来是可比的)我知道这不是您想要的答案,但是检索最新条目是否会为您提供最新的
test\u datetime
?@njzk2是否可以对日期进行排序,只要日期已格式化?ie:2012-10-19 06:45:40您可能已经注意到注释
现在无法更改架构pKs
但是如果我们没有长时间的数据库,那么?很抱歉,在我写回复时没有看到评论!真棒的人第一个成功了。但是如果日期时间的格式不同的话。事件在这种情况下,它可以工作吗?只要您的日期格式可以排序,这将工作。这里的关键部分是字符串具有相同的长度,并且字符串中的值按重要性排序(年份比月份等更重要)。如果反转任何2,它将不再工作。下次我强烈建议使用long来存储日期。如果您使用room do@Query(“从someTable中选择当前\u test\u id,max(test\u datetime)作为test\u datetime”),fun getLast():Single因为它不会找到“max(test\u datetime)”列:请添加一些解释。只有代码的答案往往会被删除。
select max(datetime) from tableName;
select max(datetime(case 
when substr(TimeIn,7,2)='PM' 
then substr(TimeIn,1,2)+12 
else substr(TimeIn,1,2) 
end  || ':' || substr(TimeIn,4,2) || ':' || '00'))  
from tablename 
where Date='10/06/2016'