gpt4 book ai didi

java - 如何检查特定日期时间是否位于相邻行日期之间?

转载 作者:行者123 更新时间:2023-12-01 14:19:32 25 4
gpt4 key购买 nike

我有下表的列值:

2013-06-28T13:00:00.000Z    Motion
2013-06-28T18:15:00.000Z Static (row2)
2013-07-03T13:57:22.000Z Moving (row3)
2013-07-03T13:59:00.000Z Motion

我想检查日期是否 29-06-2013T01:00:00Z29-06-2013T05:00:00Z都是静态。同样,我想检查日期 30-06-2013T01:00:00Z30-06-2013T05:00:00Z 。显然,如果我们考虑上面的表值,这是正确的,因为两个日期都在 row2 和 row3 之间。

如何使用 sqlite 做到这一点?

我正在获取日期 29-06-201330-06-2013 。因此,首先我需要将这两个日期的时间设置为凌晨 1 点和凌晨 5 点,然后检查它们是否都是静态

我尝试了以下方法:

Calendar cal1 = Calendar.getInstance();
cal1.setTime(input1.parse(startDate.get(0))); //29-06-2013
cal1.add(Calendar.AM, 1); //Added 1am to date 29-06-2013
weekHours = cal1.getTime();

Cursor chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
+ input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static"))
{
cal1.add(Calendar.AM, 5); //Added 5am to date 29-06-2013
weekHours = cal1.getTime();
}

chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
+ input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static")){
cal1.add(Calendar.DATE, 1);
cal1.add(Calendar.AM, 1); //Added 1am to date 30-06-2013
weekHours = cal1.getTime();


}

chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
+ input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static")){
cal1.add(Calendar.AM, 5); //Added 5am to date 30-06-2013
weekHours = cal1.getTime();

}

chkCur1 = dbAdapter.rawQuery("select movement from user where Date <= '"
+ input1.format(weekHours) + "' order by Date asc LIMIT 1", null);

chkCur1.moveToFirst();

if(!chkCur1.isAfterLast() && chkCur1.getString(0).equals("Static")){
System.out.println("Both dates are in between")
}

我使用了 4 个 SQL 查询:

1) 设定时间 1am到 date1 并检查它的前一个是否是静态的。

2) 设定时间5am到 date1 并检查它的前一个是否是静态的。

3) 设定时间1am到 date2 并检查它的前一个是否是静态的。

4) 设定时间5am到 date2 并检查它的前一个是否是静态的。

如果满足所有条件,则两个日期(日期 1 和日期 2)都在中间,即静态。

但是这是重复的 sql 查询,从而减慢了进程。

最佳答案

您可以将所有四个检查放入子查询中:

SELECT (SELECT movement FROM user WHERE Date <= ? ORDER BY Date) = 'Static'
AND (SELECT movement FROM user WHERE Date <= ? ORDER BY Date) = 'Static'
AND (SELECT movement FROM user WHERE Date <= ? ORDER BY Date) = 'Static'
AND (SELECT movement FROM user WHERE Date <= ? ORDER BY Date) = 'Static';

这将为您提供带有单个 boolean 列的单个结果记录。

关于java - 如何检查特定日期时间是否位于相邻行日期之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17740343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com